uva108 - - Maximum Sum (最大连续子矩阵和)
2016-03-09 21:55
337 查看
题意:
求最大连续子矩阵和
思路:
uva507 最大连续子序列的变形:/article/8709078.html
枚举第i行到第j行的和,再从i到j行的各列和依次累加,存入数组b,这样就转为一维的求数组b的最大连续子序列和的问题了。
代码如下:
求最大连续子矩阵和
思路:
uva507 最大连续子序列的变形:/article/8709078.html
枚举第i行到第j行的和,再从i到j行的各列和依次累加,存入数组b,这样就转为一维的求数组b的最大连续子序列和的问题了。
代码如下:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int N = 105; int a , b ; int n; int max_sum(int arr[]) { int sum = arr[0], maxn = -1; for (int i = 1; i<n; i++) { if (sum > 0) sum += arr[i]; else sum = arr[i]; if (sum>maxn) maxn = sum; } return maxn; } int main() { while (~scanf("%d", &n)) { for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) scanf("%d", &a[i][j]); int sum, maxn = -0x3f3f3f3f; for (int i = 0; i < n; i++) { for (int k = 0; k < n; k++) b[k] = 0; for (int j = i; j < n; j++){ //第i行到第j列 for (int k = 0; k < n; k++) b[k] += a[j][k]; sum = max_sum(b); maxn = max(maxn, sum); } } printf("%d\n", maxn); } }
相关文章推荐
- 上机报告2
- phpcmsV9后台审核内容增加删除修改内容选项!
- 什么是android Service?
- 文章标题
- yum 一些命令
- 创建单例的两种方式(懒汉式&GCD)
- 谷歌百度必会的搜索小技巧
- Saudi Arabia
- 详细解说 STL 排序(Sort)
- Linux:Unable to locate package错误解决
- 【设计模式】21、策略模式
- 外键约束 以及 数据库中实体的对应关系(1==1,1==n,n==n)
- [android] listview入门
- 【SPOJ-PONY1】Help Dr Whooves【prufer序列】
- PHP时间函数详解
- C语言基础语法
- PHPCMSV9的CKEDITOR编辑器增加行距
- ruby简单的基础 5
- win8.1 安装PL2303串口驱动
- 在未排序数组中找到和为k的最长子数组长度