#include<iostream> #include<cmath> #include<iomanip> #include<cstring> #include<string> #include<vector> #include<algorithm> #include<ctype.h> using namespace std; int dp[101]; int a[101][101]; int dp1[101]; int num[5051]; int main() { int n; cin >> n; for (int i = 0;i < n;i++) { for (int j = 0;j < n;j++) { cin >> a[i][j]; //dp[i+1][j] = a[i][j]+dp[i][j]; } } int max1 = -999; for (int i = 0;i < n;i++) { int z[101]; memset(z, 0, sizeof(z)); for (int j = i;j < n;j++) { for (int k = 0;k < n;k++) { z[k] += a[j][k]; int pre; if (k == 0 && z[0] < 0) { z[0] = 0; dp[0] = z[0]; } else { if (dp[k - 1] + z[k] > 0) dp[k] = max(dp[k - 1] + z[k], z[k]); else dp[k] = 0; if (dp[k] > max1) max1 = dp[k]; } } } } cout << max1; } |
Double click to view unformatted code.