HDOJ 1003 maxsum(最大连续子序列和)

zhichixian 2013-06-07 10:47:17
http://acm.hdu.edu.cn/showproblem.php?pid=1003我的代码老是Runtime Error (STACK_OVERFLOW),试了几组多个最大和的数据也都符合题目要求,还有什么特别的情况是没考虑到的?谢谢?希望能提供组Runtime Error(STACK_OVERFLOW)的数据,不要贴代码
...全文
87 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
FancyMouse 2013-06-07
  • 打赏
  • 举报
回复
大数据递归栈溢出而已。别写递归。
zhichixian 2013-06-07
  • 打赏
  • 举报
回复
#include <stdio.h> #include <string.h> #define N 100005 #define MIN -9999 int arr[N]; int m; int sum[N]; int end[N]; int max; int m1; int m2; int maxsum(int si) { if (si >= m || si < 0) return 0; int tmax = maxsum(si+1); if (arr[si] + tmax > arr[si]) { sum[si] = arr[si] + tmax; end[si] = (si+1 >= m) ? si : end[si+1]; } else { sum[si] = arr[si]; end[si] = si; } if (sum[si] >= max) { max = sum[si]; m1 = si; m2 = end[si]; } return sum[si]; } int main() { int n = 0; scanf("%d", &n); int i = 0; for (i = 0; i < n; i++) { scanf("%d", &m); int j = 0; for (j = 0; j < m; j++) scanf("%d", arr+j); max = MIN; m1 = m2 = 0; maxsum(0); // printf("Case %d:\n%d %d %d\n", i+1, max, m1+1, m2+1); if (i != n-1) printf("\n"); } return 0; } /* 2 5 6 -1 5 4 -7 7 0 6 -1 1 -6 7 -5 */
zhichixian 2013-06-07
  • 打赏
  • 举报
回复
引用 2 楼 FancyMouse 的回复:
大数据递归栈溢出而已。别写递归。

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧