zoj 1074 || poj 1050 To the Max(简单DP)

书上的例子。。最大字串和我自己写出来了一个,和书上不太一样,不过书上的比较简单呀。。。

 

这个题很早以前都见过了,就是不会写 = =。。。学会最大字串后,这个应该也写写了。。

 

看了书,发现就是把几行加起来把二维的转化成一维的了,谁想出来的啊,真聪明啊。。。

 

自己回来写,有几个小错误,记下了。。。道理是都理解了。。

 

 

加油!fighting!

 

#include <stdio.h> #include <stdlib.h> #include <iostream> #include <string.h> #define N 101 using namespace std; int Maxsum(int n, int *a) { int sum = 0,b = 0; for(int i=0; i<n; i++) { if( b > 0 ) b += a[i]; else b = a[i]; if( b > sum ) sum = b; } return sum; } int main(void) { int n,mat[N][N]; int sum[N],max = 0; cin >> n; for(int i=0; i<n; i++) for(int k=0; k<n; k++) cin >> mat[i][k]; for(int i=0; i<n; i++) { memset(sum,0,sizeof(sum)); for(int k=i; k<n; k++) { for(int j=0; j<n; j++) sum[j] += mat[k][j]; int tempsum = Maxsum(n,sum); if( tempsum > max ) max = tempsum; } } cout << max << endl; return 0; }  

你可能感兴趣的:(zoj 1074 || poj 1050 To the Max(简单DP))