java实现动态规划求解给定矩阵的和最大的子数组(矩阵中数字正负均存在)

来源:互联网 发布:华为程序员工资多少 编辑:程序博客网 时间:2024/06/06 02:57

问题:

   给定一个指定的矩阵,维数小于1000,在矩阵的所有子数组中寻找具有最大和的子数组求和输出

思路:

    典型的动态规划问题

下面是具体的实现:

import java.util.Scanner;class  largestSubSum{public static void printArr(int[] numbers)    {        for(int i = 0 ; i < numbers.length ; i ++ )        {        System.out.print(numbers[i] + ",");        }        System.out.println("");    }public static void main(String[] args) {int M,N;Scanner sc=new Scanner(System.in);M=sc.nextInt();N=sc.nextInt();int total=M*N;int [][] arr=new int[M][N];int [] b=new int[total];for (int i =0;i<M;i++ ){     for (int j=0;j<N ;j++ )     { arr[i][j]=sc.nextInt(); b[i*N+j]=arr[i][j];       } } printArr(b); sc.close(); int []dp=new int[total]; dp[0]=b[0]; for(int i=1;i<total;i++){     dp[i]=Math.max(dp[i-1]+b[i],dp[i-1]); } printArr(dp); System.out.println("The Largest Sum of subArr is:"+dp[total-1]); }}


结果如下:



阅读全文
1 0
原创粉丝点击