首页 > 代码库 > 51nod 1051 最大子矩阵和(dp)
51nod 1051 最大子矩阵和(dp)
题目链接:51nod 1051 最大子矩阵和
实质是把最大子段和扩展到二维。读题注意m,n。。。
1 #include<cstdio> 2 #include<cstring> 3 #include<vector> 4 #include<algorithm> 5 #define CLR(a,b) memset((a),(b),sizeof((a))) 6 using namespace std; 7 const int N = 501; 8 int dp[N][N]; 9 int main(){10 int n, m, i, j, k, s, ans, x;11 scanf("%d%d", &m, &n);12 CLR(dp, 0);13 for(i = 1; i <= n; ++i){14 for(j = 1; j <= m; ++j){15 scanf("%d", &x);16 dp[i][j] = x + dp[i-1][j];17 }18 }19 ans = 0;20 for(i = 1; i <= n; ++i){21 for(j = i; j <= n; ++j){22 s = 0;23 for(k = 1; k <= m; ++k){24 x = dp[j][k] - dp[i-1][k];25 if(s > 0)26 s += x;27 else28 s = x;29 ans = max(ans, s);30 }31 }32 }33 printf("%d\n", ans);34 return 0;35 }
51nod 1051 最大子矩阵和(dp)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。