求大佬讲下代码
  • 板块灌水区
  • 楼主洋本羊
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/7/10 15:14
  • 上次更新2023/11/4 15:09:03
查看原帖
求大佬讲下代码
292069
洋本羊楼主2021/7/10 15:14

老师给了一个最大连续子数列和的dp代码,但我没看懂,求大佬们简单说一下,谢谢[合十]

题干

给定一个数列,其中可能有正数也可能有负数,我们的任务是找出其中连续的一个子数列(不允许空数列),使它们的和尽可能大。

样例

input

8
-2 6 -1 5 4 -7 2 3

output

14

Code

#include<stdio.h>
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int A[10000],dp[10000];//A存序列,dp[i]存以i为结尾的连续序列的最大和
int main()
{
	int n;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
		scanf("%d",&A[i]);
	dp[0]=A[0];
	for(int i=1;i<n;i++)
		dp[i]=max(A[i],dp[i-1]+A[i]);
	int k=0;
	for(int i=1;i<n;i++)
	{
		if(dp[i]>dp[k])
			k=i;
	}
	cout<<dp[k]<<endl;
	return 0;
}

再次感谢

2021/7/10 15:14
加载中...