摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=1559这题相对上一题来说多了个限制条件,矩阵大小要是x*y的,这样的话倒更简单,只需计算出连续的x行,连续的y列和最大和即可,纵列和的求解用到了压缩的思想,就是把连续的x行上的同一列的数都相加存储在一个数组列对应的的下标元素里面 1 #include 2 #include 3 int a[1001][1001],n,m,x,y; 4 int maxx(int *b,int k) 5 { 6 int i,max=0,sum[11111]; 7 for(i=0;imax)max=sum[i];17... 阅读全文
摘要:
#include#includeint a[110][110],n;int maxx(int *b,int m){ int i,max,now; for(i=0;ib[i]) now+=b[i]; else now=b[i]; if(max0时(即前面的段加上a[j]这一段值会更大,自然把a[j]这一段接上)b[j]=b[j-1]+a[j],否则(由于前面的段为负值,加上a[j],会使值变小,这样的话,我们将前面的段去掉,a[j]即是最大值)b[j]=a[j].故b[j]的动态规划递归式为 b[j]=max(b[j-1]+a[j],a[j]... 阅读全文