uva108

来源:互联网 发布:中日军机对峙知乎 编辑:程序博客网 时间:2024/05/21 14:55

题目的意思就是给你一个n×n的矩阵,问其中哪个小矩阵和最大。

其实就是最大子序列的变形。

把每一行元素加起来当做一个元素来算。

比如只有第一行,然后在第一列计算最大子序列,

然后把每行前两个加起来当做一个元素,在按列求最大子序列,然后把所有行的的情况都搜一遍,取到最大值。。


#include<iostream>using namespace std;const int N = 100 + 5;int n;int num[N][N];int main () {cin >> n;for (int i = 0 ; i < n;i++) {for (int j = 0 ; j < n ;j++ ) {cin >> num[i][j];}}int sum;int m = 0;int temp;for (int i = 0 ; i < n ;i++) { for (int l = 0 ; l < n ;l++) {sum = 0;for (int j = 0 ; j < n ;j++) {temp = 0;for (int k = i ; k <= l ;k++) {temp += num[j][k];}sum += temp;if (sum < 0 ) {sum = 0;}if (sum > m) {m = sum;}}}}cout << m <<endl;}


0 0
原创粉丝点击