您的位置:首页 > 其它

二维数组求和

2015-06-22 21:26 162 查看
二维数组求和

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

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

源代码

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;
}
}


运行截图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: