UVA - 108 Maximum Sum

来源:互联网 发布:数据备份的策略 编辑:程序博客网 时间:2024/04/28 18:24

题意大意:给出 n*n 的矩阵,求出里面子矩阵的和的最大值

解题思路:这题是最大连续子序列的应用,序列是一维的,矩阵是二维的,所以我们可以把矩阵转换为一维的来算,

也就是枚举矩阵的连续几行的合并,这样就转换为一维的了,再用最大子序列的算法去求,更新最大值就可以了


#include <cstdio>#include <cstring>int main() {int N, A[105][105], T[105], MAX = -128;scanf("%d", &N);for (int i = 0; i < N; i++)for (int j = 0; j < N; j++)scanf("%d", &A[i][j]);for (int i = 0; i < N; i++) {memset(T, 0, sizeof(T));for (int j = i; j < N; j++) {int sum = 0;for (int k = 0; k < N; k++) {T[k] += A[j][k];sum >= 0 ? sum += T[k] : sum = T[k];if (sum > MAX)MAX = sum;}}}printf("%d\n", MAX);return 0;}


0 0
原创粉丝点击