博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uva-108-贪心
阅读量:6154 次
发布时间:2019-06-21

本文共 1451 字,大约阅读时间需要 4 分钟。

题意:

求二维数组中子数组中的最大和.

使用二维数组,第i行表示前i行的和.那么a[i-j]表示从j行到i行的和.注意第三层循环,每次都保存当前最大的sum,如果sum小于0,直接置0.

 

#include"pch.h"#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include"math.h"namespace cc{ using std::cout; using std::endl; using std::cin; using std::map; using std::vector; using std::string; using std::sort; using std::priority_queue; using std::greater; using std::vector; using std::swap; using std::stack; using std::queue; using std::bitset; constexpr int N = 200; int a[N][N]; void solve() { memset(a, 0, sizeof(a)); int nn; cin >> nn; for (int i = 1;i <= nn;i++) { for (int j = 1;j <= nn;j++) { int cur = 0; cin >> cur; a[i][j] = a[i - 1][j] + cur; } } int ans = INT32_MIN; for (int i = 0;i <= nn;i++) { for (int j = i;j <= nn;j++) { int sum = 0; for (int col = 1;col <= nn;col++) { //当前行的最大值 if (i == j) { if (sum < 0) sum = a[i][col]; else sum += a[i][col]; } else { if (sum < 0) sum = a[j][col] - a[i][col]; else sum += a[j][col] - a[i][col]; } if (sum > ans && sum != 0) ans = sum; } } } cout << ans << endl; }};int main(){#ifndef ONLINE_JUDGE freopen("d://1.text", "r", stdin);#endif // !ONLINE_JUDGE cc::solve(); return 0;}

 

posted on
2019-04-14 16:22 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/shuiyonglewodezzzzz/p/10705641.html

你可能感兴趣的文章
cacti分组发飞信模块开发
查看>>
浅析LUA中游戏脚本语言之魔兽世界
查看>>
飞翔的秘密
查看>>
Red Hat 安装源包出错 Package xxx.rpm is not signed
查看>>
编译安装mysql-5.6.16.tar.gz
查看>>
活在当下
查看>>
每天进步一点----- MediaPlayer
查看>>
PowerDesigner中CDM和PDM如何定义外键关系
查看>>
跨域-学习笔记
查看>>
the assignment of reading paper
查看>>
android apk 逆向中常用工具一览
查看>>
MyEclipse 报错 Errors running builder 'JavaScript Validator' on project......
查看>>
Skip List——跳表,一个高效的索引技术
查看>>
Yii2单元测试初探
查看>>
五、字典
查看>>
前端js之JavaScript
查看>>
Log4J日志配置详解
查看>>
实验7 BindService模拟通信
查看>>
scanf
查看>>
Socket编程注意接收缓冲区大小
查看>>