中南 - 最大连续子序列 题解:
求助,为什么输出会多一行啊
输入数据
8
6 -2 11 -4 13 -5 -2 10
20
-10 1 2 3 4 -5 -23 3 7 -21 6 5 -8 3 2 5 0 1 10 3
8
-1 -5 -2 3 -1 0 -2 0
4
-1 -2 -4 -3
你的输出
27 0 7
27 10 19
3 3 3
0 0 0
0 -100001 0
正确输出
27 0 7
27 10 19
3 3 3
0 0 0
- #include<stdio.h>
- long long max(long long a,long long b)
- {
- if(a>b)
- return a;
- else
- return b;
- }
-
- int main()
- {
- long long max(long long x,long long y);
- long long k;
- long long i,j;
- while(~scanf("%lld",&k))
- {
- if(k==0)
- {
- break;
- }
- long long dp[100000],a[100000];
- long long ans=0,begin=0,end=0;
- int flag=1;
- for(i=0;i<k;i++)
- {
- scanf("%lld",&a[i]);
- dp[i]=a[i];
- if(a[i]>0)
- {
- flag=0;
- }
- }
- if(flag==1)
- {
- printf("0 0 0\n");
- }
- for(i=1;i<k;i++)
- {
- dp[i]=max(dp[i-1]+a[i],a[i]);
- }
- for(i=0;i<k;i++)
- {
- if(dp[i]>ans)
- {
- ans=dp[i];
- end=i;
- begin=i;
- }
- }
- long long sum=ans-a[begin];
- while(sum!=0)
- {
- begin...
登录后发布评论
输出0 0 0 之后continue;
否则会继续跑下面的代码