二维数组求和
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; } }
运行截图:
相关文章推荐
- [.NET领域驱动设计实战系列]专题九:DDD案例:网上书店AOP和站点地图的实现
- 第二次冲刺团队进展报告三
- 最好的Sublime Text插件集合
- Single Image Haze Removal(图像去雾)-CVPR’09 Best Paper
- STL之string插入
- 两个栈实现一个队列
- 端口扫描-调用NC扫描
- 第二次冲刺团队进展报告二
- 读Pyqt4教程,带你入门Pyqt4 _012
- 内存对齐的那点事
- [leetcode] 85.Maximal Rectangle
- 阶段总结
- 练习代码(五)接口与内部类(一)
- Android基础知识_Activity之间传递参数
- 第二次冲刺团队进展报告一
- Java 求字符串中出现频率最高字符
- PPT制造电子相册
- codeforces #306 550B B. Preparing Olympiad(位压缩枚举)
- JVM--总体理解
- 冒泡排序