标题:这是我遍写的杭电1003题,为什么提示我是错误答案呢
只看楼主
竹闲云
Rank: 2
等 级:论坛游民
帖 子:39
专家分:34
注 册:2011-10-9
结帖率:62.5%
已结贴  问题点数:18 回复次数:15 
这是我遍写的杭电1003题,为什么提示我是错误答案呢
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
    int a[100]={0};
    int b[100]={0};
    int h,k;
    int i,sum,m,n,p=0;
    scanf("%d",&h);
    while(h--)
    {
        p++;
        scanf("%d",&m);
        for(i=0;i<m;i++)
        {
            scanf("%d",&a[i]);
        }
        for(i=0;i<m;i++)
        {
            if(a[i]>=0)
            {
                k=i;
                break;
            }
        }
        
        for(i=k;i<m;i++)
        {
            if(i==k)
            {
                b[i]=a[i];
            }
            else
            {
                b[i]=b[i-1]+a[i];
            }
        }
        for(i=k;i<m;i++)
        {
            if(b[i]>b[i-1])
            {
                sum=b[i];
                n=i+1;
            }
            else
            {
                sum=b[i-1];
                n=i;
            }
        }
        printf("case%d:\n",p);
        printf("%d  %d  %d\n\n",sum,k,n);
    }
   
}

[ 本帖最后由 竹闲云 于 2012-8-20 13:54 编辑 ]
搜索更多相关主题的帖子: include choice 
2012-08-20 13:13
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:3 
这题已经郁闷我好久了,怎么看就是个简单的最大子段和问题,但就是搞不定。

重剑无锋,大巧不工
2012-08-20 17:18
竹闲云
Rank: 2
等 级:论坛游民
帖 子:39
专家分:34
注 册:2011-10-9
得分:0 
回复 2楼 beyondyf
你看看我这个程序,为什么提示说运行出错呢
#include "stdio.h"
void main()
{
    int a[100]={0};
    int b[100]={0};
    int zs,gs,ks,js,cs,sum,i,t=0;
    scanf("%d",&zs);
    while(zs--)
    {
        t++;
        scanf("%d",&gs);
        for(i=0;i<gs;i++)
        {
            scanf("%d",&a[i]);
        }
        for(i=0;i<gs;i++)
        {
            if(a[i]<0)
            {
                cs=0;
            }
            else
            {
                cs=1;
                ks=i;
                break;
            }
        }
        if(cs==0)
        {
            for(i=0;i<gs;i++)
            {
                if(i==0)
                {
                    sum=a[0];
                    ks=0;
                    js=0;
                }
                else
                {
                    if(sum<a[i])
                    {
                        sum=a[i];
                        ks=i;
                        js=i;
                    }
                }
            }
        }   
        else
        {
            for(i=ks;i<gs;i++)
            {
                if(i==ks)
                {
                    b[ks]=a[ks];
                }
                else
                {
                    b[i]=b[i-1]+a[i];
                }
            }
            for(i=ks;i<gs;i++)
            {
                if(i==ks)
                {
                    sum=b[i];
                    js=i;
                }
                else
                {
                    if(sum<b[i])
                    {
                        sum=b[i];
                        js=i;
                    }
                }
            }
        }
        printf("case%d:\n",t);
        printf("%d %d %d\n\n",sum,ks+1,js+1);
    }   
}
2012-08-20 17:21
shmily520m
Rank: 1
等 级:新手上路
帖 子:12
专家分:4
注 册:2012-7-31
得分:3 
没错啊。
2012-08-20 17:32
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:0 
数组开的太小,溢出了。

重剑无锋,大巧不工
2012-08-20 17:52
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
得分:3 
以下是引用beyondyf在2012-8-20 17:18:14的发言:

这题已经郁闷我好久了,怎么看就是个简单的最大子段和问题,但就是搞不定。


杨大哥说搞不定,我马上兴趣就来了

回去试试
2012-08-20 18:47
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:0 
以下是引用demonleer在2012-8-20 18:47:03的发言:
 
杨大哥说搞不定,我马上兴趣就来了
 
回去试试

呵呵,好啊,搞定了一定要告诉我,也了却我一个心结。



重剑无锋,大巧不工
2012-08-20 18:55
zhangqi_gsts
Rank: 6Rank: 6
来 自:甘肃天水
等 级:侠之大者
威 望:1
帖 子:227
专家分:457
注 册:2011-3-27
得分:3 
输出的case首字母要大写,写成“Case”
#include <iostream>
using namespace std;
int main()
{
    int t;
    cin>>t;
    for(int x=0;x<t;x++)
    {
        int n;
        cin>>n;
        int *sum=new int[n]();
        int a,max;
        cin>>a;
        sum[0]=max=a;
        int from=1,to=1;
        int start=1,end=1;
        for(int i=1;i<n;i++)
        {
            cin>>a;
            sum[i]=a;
            if(sum[i]<=a+sum[i-1])
            {
                sum[i]+=sum[i-1];
                end=i+1;
            }
            else
            start=end=i+1;
            if(max<=sum[i])
            {
                max=sum[i];
                from=start,to=end;
            }
        }
        cout<<"Case "<<x+1<<':'<<endl;
        cout<<max<<' '<<from<<' '<<to<<endl;
        if(x<t-1) cout<<endl;
    }
}
2012-08-20 19:29
JON_me
Rank: 2
等 级:论坛游民
帖 子:30
专家分:68
注 册:2012-5-4
得分:3 
表示这个程序的结果和自己笔算的结果一样,个人认为没错啊!

因为爱情,不会轻易悲伤······
2012-08-20 19:30
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:0 
回复 9楼 JON_me
表示我当初也试过各种数据,表示都正确,但提交到OJ就是WA。表示很无奈。

重剑无锋,大巧不工
2012-08-20 19:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-379800-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.167507 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved