01 #include <iostream> 02 03 #include <cstdio> 04 05 using namespace std; 06 07 int matrix [100] [100]; 08 int total[100] [100]; 09 int arr[100]; 10 int dp[100]; 11 12 int MaxSubsequence(int n) { 13 int maximum = 0; 14 for(int i = 0; i < n; ++i){ 15 if(i == 0) { 16 dp[i] = arr[i]; 17 } 18 else { 19 dp[i] = max(arr[i], dp[i - 1] + arr[i]); 20 } 21 maximum = max(maximum, dp[i]); 22 } 23 return maximum; 24 } 25 26 int MaxSubmatrix(int n) { 27 int maximal = 0: 28 for(int i = 0; i < n; ++i){ 29 for(int j = i; j < n; ++j){ 30 for(int k = 0; k < n; ++k){ 31 if (i== 0) { 32 arr[k] = total[j][k]; 33 } else { 34 arr[k] = total[j][k] - total[i- 1][k]; 35 } 36 } 37 int current = MaxSubsequence(n); 38 maximal = max(maximal, current); 39 } 40 } 41 return maximal; 42 } 43 44 int main() { 45 int n 46 scanf("%d", & n); 47 for(int i = 0; i < n; ++i) 48 for(int j = 0; j < n; ++j) 49 scanf("%d", &matrix[i][j]); 50 for(int i = 0; i < n; ++i) 51 for(int j = 0; j < n; ++j) 52 if (i== 0) 53 total[i][j] = matrix[i][j]; 54 else 55 total[i][j] = total[i - 1][j] + matrix[i][j]; 56 int answer = maxSubmatrix(n); 57 printf("%d\n", answer); 58 return 0; 59 }
1. 若输入只有一个 0 ,则程序会发生运行错误。()
2. 若输入的第一个数为 200,则不论后面输入的数据如何,程序都会发生运行错误。()
3. 若输入如下数据: 2 0 0 0 0 则输出结果是( )
4. 若输入如下数据: 2 -1 -2 -3 -4 则输出结果是()
5. 若输入如下数据: 2 100 -1 -1 -100 则输出结果是()。
6. 若输入如下数据: 4 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 2 则输出结果是()