文章

28

粉丝

44

获赞

4

访问

6.7k

头像
中南 - 最大连续子序列 题解:
P1664 中南大学机试题
发布于2024年3月17日 20:40
阅读数 154

求助,为什么输出会多一行啊

输入数据

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

  1. #include<stdio.h>
  2. long long max(long long a,long long b)
  3. {
  4. if(a>b)
  5. return a;
  6. else
  7. return b;
  8. }
  9.  
  10. int main()
  11. {
  12. long long max(long long x,long long y);
  13. long long k;
  14. long long i,j;
  15. while(~scanf("%lld",&k))
  16. {
  17. if(k==0)
  18. {
  19. break;
  20. }
  21. long long dp[100000],a[100000];
  22. long long ans=0,begin=0,end=0;
  23. int flag=1;
  24. for(i=0;i<k;i++)
  25. {
  26. scanf("%lld",&a[i]);
  27. dp[i]=a[i];
  28. if(a[i]>0)
  29. {
  30. flag=0;
  31. }
  32. }
  33. if(flag==1)
  34. {
  35. printf("0 0 0\n");
  36. }
  37. for(i=1;i<k;i++)
  38. {
  39. dp[i]=max(dp[i-1]+a[i],a[i]);
  40. }
  41. for(i=0;i<k;i++)
  42. {
  43. if(dp[i]>ans)
  44. {
  45. ans=dp[i];
  46. end=i;
  47. begin=i;
  48. }
  49. }
  50. long long sum=ans-a[begin];
  51. while(sum!=0)
  52. {
  53. begin...
登录查看完整内容


登录后发布评论

2 条评论
snake VIP
2024年3月17日 20:49

输出0 0 0 之后continue;

否则会继续跑下面的代码

赞(0)

promising : 回复 snake: 谢谢

2024年3月17日 21:05