NYOJ 最大和
#include<iostream> #include<algorithm> #include<string> using namespace std; int mp[105][105]; int main() { int t; cin>>t; while(t--) { int r,c; cin>>r>>c; for(int i=1;i<=r;i++) { for(int j=0;j<=c;j++) { if(j==0) mp[i][j] = 0; else { cin>>mp[i][j]; if(j!=1) { mp[i][j] = mp[i][j] + mp[i][j-1]; } } } } int temp,sum; int max = -10000000000; for(int i=1;i<=c;i++) { for(int j=i;j<=c;j++) //(i,j)区间 表示矩阵的宽度 ,可以理解把(i,j)的和 换元成一个数 { temp = 0; sum = 0; for(int k=1;k<=r;k++) // { sum = sum + mp[k][j] - mp[k][i-1]; //mp[k][0] = 0; if(sum > max) { max = sum; } if(sum < 0) { sum = 0; } } } } cout<<max<<endl; } return 0; }