混子


私信TA

用户名:H1910823015

访问量:4324

签 名:

等  级
排  名 361
经  验 5079
参赛次数 14
文章发表 16
年  龄 0
在职情况 学生
学  校 贺州学院
专  业

  自我简介:

解题思路:

注意事项:

参考代码:

#include <stdio.h>

#include <algorithm>

using namespace std;

const int maxn=100010;

int a[maxn],dp[maxn];

int main()

{

    int n;

    scanf("%d",&n);

    for(int i=0;i<n;i++)

        scanf("%d",&a[i]);

    dp[0]=a[0];//把第一个数赋给dp[]

    for(int i=1;i<n;i++)

        dp[i]=max(a[i],dp[i-1]+a[i]);//如果dp的i-1项加上最后a[i]的数小于a[i]本身,则取a[i]的值,并实时更新给dp最大值。反之取dp[i-1]的值

    int k=0;//取一个k值并初始化为0

    for(int i=1;i<n;i++)

        if(dp[i]>dp[k])//下标k跟下标i比较,如果数组下标i比k的值大,实时更新k的值

            k=i;

    printf("%d\n",dp[k]);//输出dp数组下标为k的数值

    return 0;

}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区