acm大神帮忙看看,偶遇一道自认为的水题,短短的十几行代码,去总是wa.......到底是哪里出现的问题?
[M]最大子段和Accept:14 Submit:82
Time Limit:1000MS Memory Limit:65536KB
[Description]
算法分析课上我们接触过最大子段和的例题.可是teoy不喜欢写算法作业,现在就由你来帮助他完成这段代码的实现。所谓最大子段和,就是在给出的整数序列中,找出一个个数大于零的连续子段,使其和最大。 [Input]一共有T组测试数据。每组数据第一行为一个整数n,表示给出的整数序列长度。接下来一行共n个整数,第i个数Ai表示序列的第,i个数。 数据范围:0<T<=100;0<n<=10^4;|Ai|<=10^6; [Output]对于每组数据,输出一个整数,即连续子段的最大和。
[Sample Input]
231 2 -371 -2 3 4 -1 2 -5
[Sample Output]
3
8
下面是我提交的状态,是北京邮电大学的oj啊,ID号码是只是随意的在网上看到了,然后就做,知道是最大子串和,输入输出也正确,思索再三,还是没有头绪,希望大家指点迷津,共同进步~~~~
很坑爹吧是不是
下面是我的代码,希望各位牛人帮我看看,到底是哪里错了,顶礼膜拜表示
#include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
int i,sum=0,max=0;
int temp;
for(i=0;i<n;i++)
{
scanf("%d",&temp);
if(sum>0)sum+=temp;
else sum=temp;
if(sum>max)max=sum;
}
printf("%d\n",max);
}
return 0;
}
建议大家编好亲自上oj上面提交一下,我已经用过__int64,可还是wa............
[ 本帖最后由 lianjiecuowu 于 2012-7-25 22:46 编辑 ]