题目描述:
一看到题目,就是动态规划思想,但是不会用动态规划。
(1)自己写的用两重循环实现,呜呜呜
#include<stdio.h>
int main()
{
int n,k=0;
scanf("%d",&n);
int a[n];
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(a[i]<0)
k++;
}
int sum=0,max=a[0];//max存储最大值
for(int i=0;i<n;i++)
{
sum=a[i];
for(int j=i+1;j<n;j++)
{
if(sum>max)
max=sum;
if(a[j]+sum>max)
max=a[j]+sum;
sum =a[j]+sum;
}
}
if(k==n)
printf("0\n");
printf("%d\n",max);
return 0;
}
动态规划思想:
(2)一重循环实现:
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a[n];
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
int sum=0,max=0;
for(int i=0;i<n;i++)
{
sum+=a[i];
if(sum>max)
max=sum;
else if(sum<0)
sum=0;
}
printf("%d\n",max);
return 0;
}
动态规划是我的壁垒。。。。