(2019复旦机试)最大连续子序列

关键字: 动态规划、最大连续子序列和

题目描述:本题OJ链接

给定一个数字序列A1,A2…An,求i,j(1<=i<=j<=n),使得Ai+…+Aj最大,输出这个最大和。

输入输出格式
输入描述:

第一行输入一个整数n,表示数列大小 第二行输入n个整数

输出描述:

输出一个整数,求i,j(1<=i<=j<=n),使得Ai+…+Aj最大

思路分析:

最大连续子序列和问题 dp[i] = max(dp[i-1]+nums[i], nums[i]) //dp[i]即为i位置能达到的最大的连续子序列和

代码:

#include<iostream>
#include<vector>
using namespace std;
/*
输入案例
6
-2 11 -4 13 -5 -2
*/
int main() {
	int n;
	cin >> n;
	vector<int> nums(n);
	for (int i = 0; i < n; i++) {
		cin >> nums[i];
	}
	vector<int> dp(n, 0);
	dp[0] = nums[0];
	int res = dp[0];
	for (int i = 1; i < n; i++) {
		dp[i] = max(dp[i - 1] + nums[i], nums[i]);
		res = max(res, dp[i]);
	} 
	cout << res << endl;
}
全部评论

相关推荐

头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务