| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3070 人关注过本帖
标题:杭电ACM 1003求大神看看为什么A不了
只看楼主 加入收藏
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 18楼 qq200258
当然啦~其实我没有按AC格式来~只是测试一个案例~所以在外面多加一个用于表示测试案例次数的循环就可以了~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-04-22 23:16
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
今天没事,把这个AC了,开始的代码测试都正常,就是不能AC,调了好久的。
程序代码:
#include <stdio.h>
int main()
{
    int i,j,k,s,e,t,n,l,max,sum;
    scanf("%d",&t);
    for(i=0;i<t;i++)
    {
        if(i)printf("\n");
        scanf("%d",&n);
        for(j=s=e=l=sum=0,max=-2000,j=0;j<n;j++)
        {
            scanf("%d",&k);
            sum+=k;
            if(max<sum)
            {
                e=j;
                s=l;
                max=sum;
            }
            if(sum<0)
            {
                l=j+1;
                sum=0;
            }
        }
        printf("Case %d:\n%d %d %d\n",i+1,max,s+1,e+1);
    }
}
2017-04-23 22:40
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 22楼 xzlxzlxzl
这个感觉理解上来比较简单~就是sum小于0时就意味着要考虑重新变动取值范围了~除非全负数~不然负数开端是不能取的~当遇到第一个sum是负数时就意味着以这个点为端点前面区间和这个端点的和都是负数~然后把sum清零就相当于重新计算区间~应该是这个样子了~

[此贴子已经被作者于2017-4-24 03:27编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-04-24 03:13
快速回复:杭电ACM 1003求大神看看为什么A不了
数据加载中...
 
   



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

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