计蒜客-最大子阵列 / NYOJ题目44-子串和
来源:互联网 发布:潍坊行知学校网站 编辑:程序博客网 时间:2024/05/18 02:41
- 在一个数组中找出和最大的连续几个数。(至少包含一个数)
例如:
数组A[] = [−2, 1, −3, 4, −1, 2, 1, −5, 4],则连续的子序列[4,−1,2,1]有最大的和6.
输入格式
第一行输入一个不超过1000的整数n。
第二行输入n个整数A[i]。
输出格式
第一行输出一个整数,表示最大的和。
样例输入
31 1 -2
样例输出
2
逻辑真的非常重要,想清楚思路了题目才会简单
#include <cstdio>#include <iostream>using namespace std;int main(){int n;while(scanf("%d",&n)!=EOF){int a[1001],i,b[1001],sum=0;int max = -10000000;for(i=0;i<n;i++)cin>>a[i];for(i=0;i<n;i++){sum+=a[i];if(sum>=max){max=sum;}if(sum<0){sum=0;}}cout<<max<<endl;}return 0;}
下面是动态规划的做法:
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- const int maxn=1000005;
- int x[maxn],dp[maxn];
- int maxsum(int n)
- {
- memset(dp,0,sizeof(dp));
- int ans=dp[0]=x[0];
- for(int i=1;i<n;++i)
- {
- dp[i]=max(dp[i-1]+x[i],x[i]);
- ans=max(ans,dp[i]);
- }
- return ans;
- }
- int main()
- {
- int t;
- scanf("%d",&t);
- while(t--)
- {
- int n;
- scanf("%d",&n);
- for(int i=0;i<n;++i)
- {
- scanf("%d",&x[i]);
- }
- printf("%d\n",maxsum(n));
- }
- return 0;
- }
阅读全文
0 0
- 计蒜客-最大子阵列 / NYOJ题目44-子串和
- 最大子阵列和
- 计蒜客 最大子阵列
- 计蒜客021-最大子阵列
- nyoj 44 子串和【最大子串和】
- nyoj 44 子串和(最大连续子序列和)
- nyoj 44 子串和 & nyoj 104 最大和
- 最大子阵列
- 最大子阵列
- NYOJ 44 子串和 && NYOJ 983 首尾相连数组的最大子数组和
- NYOJ 题目983 首尾相连数组的最大子数组和
- 计蒜客 第21题:最大子阵列
- 计蒜客--第21题:最大子阵列
- 计蒜客ACM 最大子阵列 java
- 计蒜客 难题题库 021 最大子阵列
- Python|计蒜客——最大子阵列
- NYOJ 44 & 104 - 最大连续子串和(矩阵最大子矩阵和)
- NYOJ--44(动态规划)-题目----------------------------- 子串和
- MFC2-实时读取视频
- linux 工具篇
- hdu-6152
- react 快速启动
- 存储过程 触发器 视图
- 计蒜客-最大子阵列 / NYOJ题目44-子串和
- Struts2处理数据
- android文件系统挂载分析(1)---正常开机挂载
- Sublime text3 编译Python 只显示时间无输出结果处理
- effective C++条款二十三解读
- HTTP首部
- DOM事件大全
- 对于相同值排序有没有对rownum伪列应用一个限定条件排序结果不同
- NDK开发(一)--ndk-build