码迷,mamicode.com
首页 > 编程语言 > 详细

二维数组求和

时间:2015-06-22 21:59:34      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

                                                                                               二维数组求和

输入一个二维的整形数组,数组里有正数也有负数,数组中连续的一个或多个整数组成一个二维子数组,每个子数组都有一个和。求所有子数组的和的最大值。

解题思路:由于原来做的这个时间有一点久远,我记得当时的思路就是将二维数组转化为一维数组,然后利用原来的一维数组求和的方式进行计算。

源代码

package shengcheng;

import java.util.Scanner;

import org.junit.Test;

public class Erwei
{

    @Test
    public void fun()
    {
       int [][]a=new int[4][4];
       Scanner write=new Scanner(System.in);
       for(int i=0;i<4;i++)
       {
           for(int j=0;j<4;j++)
           {
               a[i][j]=write.nextInt();
           }
       }
       int  max=-200000;
       int []sum=new int [4];
     
       int  add =-200000 ;
       for(int i=0;i<4;i++)
       {
           for(int l=0;l<4;l++)
           {
               sum[l]=0;
           }
           for(int j=i;j<4;j++)
           {
               for(int k=0;k<4;k++)
               {
                   sum[k]+=a[j][k];
               }
            
           add=DP(sum,4);
           }
           if(add>max)
           {
               max=add;
           }
       }
       
       System.out.println(max);
    }

    
    
   public  int DP(int  a[],int n)
   {
       int i;
       int  []temp=new int [100];
       int  max=a[0];
       for(i=1,temp[0]=a[0];i<n;i++)
       {
            if(temp[i-1]>0)
                temp[i]=temp[i-1]+a[i];
            else 
                temp[i]=a[i];
            if(temp[i]>max)
                max=temp[i];
       }
       return max;
  }
}

运行截图:

技术分享

 

二维数组求和

标签:

原文地址:http://www.cnblogs.com/qerror404/p/4593929.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!