文章

25

粉丝

364

获赞

58

访问

226.8k

头像
用int类型数组储存数据,部分测试数据溢出,改为long long就好了
P1172 清华大学/兰州大学机试题
发布于2021年2月18日 18:31
阅读数 9.6k

  1. /*
  2. * Description: 最大序列和 (http://noobdream.com/DreamJudge/Issue/page/1172/)
  3. * Author: 鱼翔浅底
  4. * Date: 2021-02-18 16:54:58
  5. */
  6. #include <cstdio>
  7. #include <cstdlib>
  8. using namespace std;
  9. //计算最大序列和
  10. long long MaxSequenceSum(long long S[], int N)
  11. {
  12. long long ans = S[0], tmp = 0;
  13. for (int i = 0; i < N; i++)
  14. {
  15. tmp+=S[i];
  16. if (ans<tmp)//更新最大子列和
  17. {
  18. ans=tmp;
  19. }
  20. if (tmp<0)//子列和为负,则重新开始累加
  21. {
  22. tmp=0;
  23. ans=(ans<S[i])?S[i]:ans;//更新最大子列和
  24. }
  25. }
  26. return ans;
  27. }
  28. int main()
  29. {
  30. int N;
  31. long long S[100000];//用int部分数据溢出
  32. while (~scanf("%d", &N))
  33. {
  34. for (int i = 0; i < N; i++)
  35. {
  36. scanf("%lld", S + i);
  37. }
  38. printf("%lld\n", MaxSequenceSum(S, N));
  39. }
  40. return 0;
  41. }

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发