《算法竞赛-训练指南》第一章-1.24_pre-一维数组最大连续和
来源:互联网 发布:mac下安装nodejs 编辑:程序博客网 时间:2024/06/11 05:30
这道题目我研究了一个上午,也是怪自己以前没有弄懂这个类型的题目,所以猛然上手,得弄懂很多的知识点。
第一、一维数组的最大连续和的求法。也是怪自己走私,看了好久也没有看怎么明白,不过最中还是明白了点,只让求的是最大连续和,没有让将这几个数求出来,分别是几,不过让的话,也是非常的简单的,只用存进数组就好了。
算法思想是这样的,最大连续和,当然是针对数组中有负数的情况,如果没有负数那谈不上求了,因为,最大的连续和肯定是整个数组的和。然后再说一下当全部是负数的情况下,求的的最大连续和是多少?其实应该是零的,因为最大连续子序列可以是个空集合,即不含任何的数组中的数,那么,此空集合的含义难道不是零么?仔细品味。
然后就是具体的算法了,既然是最大连续和,就肯定要抓住两个关键字,最大和连续,最大要求我们保证求得的结果是最大的,连续要求我们保证,你求得的一定是连续的数列和,那么就注意有这么个结论,那就是当你的和是负数的情况下,再加上一个数作为最大序列和,肯定是不正确的,也很明显,分两种情况,第一种是这个数是正数,那当然可得,当然是只要个整数来的大咯!如果是个负数,也不需要算了,因为你加上一个负数反而使的结果更小,显然这不是最优的结果,肯定要舍弃这个结果重新算。
这里我要插一些题外话,我太急功近利了,不知道自己需要的是什么,不知道自己想要过的生活是什么样子的,不知道自己的最终奋斗目标是什么,所以自己什么都做不好。有时候不知道怎么样生活,不知道什么样的生活方式才适合自己,所以我只能不断的读书,从书中读出我真正需要的是什么样的生活。我不知道给自己极大的压力,定一个非常难以达到的目标到底适不适合我,但是,我绝对不能虚度了我的青春年华绝对是正确的,不管我做的是什么样的事,定不能虚度光阴,因为你所讨厌的,厌恶的,及其恶心的今天,是多少人,希望用生命来换取的今天!
有时候是需要自省的,生活有计划,计划不落空,对生活充满激情,这才是正确的人生观。
贴出代码:
#include <stdio.h>#include <string.h>#include <iostream>#include <string>using namespace std;const int MAXN = 100;int A[MAXN]; int maxSum(int n, int *B){int ans = 0;int sum = B[0];for (int i = 1; i < n; i++){if (sum > 0){sum += B[i];}else{sum = B[i];}if (sum > ans){ans = sum;}}return ans;}int main(){int N;while (scanf("%d", &N) != EOF){for (int i = 0; i < N; i++){scanf("%d", &A[i]);}int ans = maxSum(N, A);printf("%d\n", ans);}system("pause");return 0;}
觉得还是把贪心思想的代码贴过来吧;
#include <stdio.h>#include <string.h>#include <iostream>#include <string>using namespace std;const int MAXN = 100;int N;int A[MAXN];int S[MAXN];int main(){while (scanf("%d", &N) != EOF){for (int i = 1; i <= N; i++){scanf("%d", &A[i]);}S[0] = 0;for (int i = 1; i <= N; i++){S[i] = S[i - 1] + A[i];}int ans = 0;int MIN = 0;for (int i = 1; i <= N; i++){ans = max(ans, S[i] - MIN);MIN = min(MIN, S[i]);}printf("%d\n", ans);}system("pause");return 0;}
- 《算法竞赛-训练指南》第一章-1.24_pre-一维数组最大连续和
- 《算法竞赛-训练指南》第一章-1.24_pre二维矩阵中的最小连续矩阵和
- 《算法竞赛-训练指南》第一章-1.24-UVa 10755
- 《算法竞赛-训练指南》第一章-1.21_LA2678
- 《算法竞赛入门经典——训练指南》第一章相关内容
- 《算法竞赛入门经典——训练指南》第一章相关内容
- 《算法竞赛-训练指南》第一章-1.4_LA 3708
- 《算法竞赛-训练指南》第一章-1.5_UVa 10881
- 《算法竞赛-训练指南》第一章-1.7——UVa 11464
- 《算法竞赛-训练指南》第一章-1.9——UVa11210
- 《算法竞赛-训练指南》-第一章-1.10_UVa 11384
- 《算法竞赛-训练指南》第一章-1.11——Uva 10795
- 《算法竞赛-训练指南》第一章-1.12_LA 3971
- 《算法竞赛-训练指南》第一章-1.13_LA 3635
- 《算法竞赛-训练指南》第一章-1.15_LA 3902
- 《算法竞赛-训练指南》第一章-1.16_LA 3177
- 《算法竞赛-训练指南》第一章-1.17_UVa 11462
- 《算法竞赛-训练指南》第一章-1.19_UVa 11549
- 小学生坐在马桶上都能读懂的C语言书(203页最新版)
- acm题目之教主系列
- 小米2恢复出厂设置(硬件格式化)
- 计算机发展历史上很有名的两个口号
- cocos2d 在一个面板上居中摆放多个图标
- 《算法竞赛-训练指南》第一章-1.24_pre-一维数组最大连续和
- 搞acm的,,,,,,
- acm教主系列
- gethostbyname
- UVA 216 Getting in Line
- Lazarus 中使用Grid++Report报表控件 的简单例子
- Linux多线程
- 6174问题
- ios开发代码笔记