程序要使用的数组放在一个叫 input.txt 的文件中,返回一个整数数组中最大子数组的和

    程序要使用的数组放在一个叫 input.txt 的文件中, 文件格式是:

          数组的行数,

          数组的列数,

          每一行的元素, (用逗号分开) 每一个数字都是有符号32位整数。

    当然, 行数和列数都是正整数。例如下面的文件说明数组是有1行, 6列, 元素依次是: 5, 6, –3, 8, –9, 2

    

 

 

package qiuhe;

public class qiuhe {
     public static void main(String args[]) {  

                // TODO Auto-generated method stub
                 int matrix[][]={{1000000000,-2000000000,300001560},{-4,1051010101,6},{-7,800000000,-9}};
                    maxSum(matrix);

        }
     public static void maxSum(int matrix[][])
     {
         if(matrix==null||matrix.length==0)
             return;
         int max=0;
         int col=matrix[0].length,row=matrix.length;     
         for(int i=0;i<row;i++)
         {
             int arr[]=new int[col];
             for(int j=i;j<row;j++)
             {
             //遍历所有的子行
                 for(int k=0;k<col;k++)
                 {
                     arr[k]+=matrix[j][k];
                     //将每子行的值进行相加然后利用子数组的最大和就可以求出子矩阵的最大和
                 }
                 for(int l=0;l<col;l++) {
                  if((l+1)%3==0) {
                  System.out.println();
                  }
                 }
                 max=Math.max(max(arr), max);
                 //求出数组的子数组和最大值
             }
         }
         System.out.println("最后得到的最大值为:"+max);
     }
     public static int max(int arr[])//求最大子数组之和
     {
         int max=0,sum=0;
         for(int i=0;i<arr.length;i++)
         {
             if(sum<=0)
             {
                 sum=arr[i];
             }
             else {
                 sum+=arr[i];
             }
             max=Math.max(sum, max);
         }
         return max;
     }
}

小组成员,庄树琦,许新达。

庄树琦负责代码的编写,许新达负责提供思路及查找bug。

posted @ 2022-03-19 21:22  椅念琼  阅读(116)  评论(0编辑  收藏  举报