| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1267 人关注过本帖
标题:Tyvj的一个题,代码不知道哪里错了,求帮忙查看
取消只看楼主 加入收藏
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
结帖率:88.89%
收藏
已结贴  问题点数:20 回复次数:5 
Tyvj的一个题,代码不知道哪里错了,求帮忙查看
这是 Tyvj 第四个题P1003(应该是第四个简单的),就是得不到AC。
我真心不知道哪里出错了,谁有耐心能帮忙看看,我的为什么错了,感激不尽!!

题目描述:
越野跑From huangrl
背景 Background
成成第一次模拟赛 第二道
描述 Description
    为了能在下一次跑步比赛中有好的发挥,贝茜在一条山路上开始了她的训练
。贝茜希望能在每次训练中跑得尽可能远,不过她也知道农场中的一条规定:
奶牛独自进山的时间不得超过M秒(1 <= M <= 10,000,000)。

    整条山路被贝茜划分成T个长度相同的小段(1 <= T <= 100,000),并且,
贝茜用S_i表示第i个小段的路况。S_i为u,f,d这3个字母之一,它们分别表示
第i个小段是上坡、平地,或是下坡。

    贝茜要花U秒(1 <= U <= 100)才能跑完一段上坡路,跑完一段平地的耗时是
F秒(1 <= F <= 100),跑完一段下坡路要花D秒(1 <= D <= 100)。注意,沿山路
原路返回的时候,原本是上坡路的路段变成了下坡路,原本是下坡路的路段变成
了上坡路。

    贝茜想知道,在能按时返回农场的前提下,她最多能在这条山路上跑多远。
输入格式 InputFormat
输入格式:

* 第1行: 5个用空格隔开的整数:M,T,U,F,以及D

* 第2..T+1行: 第i+1行为1个字母S_i,描述了第i段山路的路况
输出格式 OutputFormat
输出格式:

* 第1行: 输出1个整数,为贝茜在按时回到农场的前提下,最多能跑到多远
样例输入 SampleInput [复制数据]
13 5 3 2 1
u
f
u
d
f

样例输出 SampleOutput [复制数据]
3

数据范围和注释 Hint
输入说明:

    贝茜跑步的最大耗时为13秒(这么短...),她跑步的山路一共被划成5段。
贝茜跑完一段上坡路的耗时为3秒,平地为2秒,下坡路为1秒。山路各段的走向
如下图所示:

 _/\_
/

输出说明:

    贝茜跑完山路的前3段,然后返回,总耗时为3 + 2 + 3 + 1 + 2 + 1 = 12秒,
    只比她能在外面呆的时限少1秒。如果她跑得更远,就无法按时回到农场。


这是第一次代码:

程序代码:
#include<stdio.h>
int main(void)
{
    int    M, T, U, F, D;
    char   ch;
    int    i;
    int    flag;
    int    maxi;
    int    s;

    s = 0;
    flag = 1;
    scanf("%d%d%d%d%d", &M, &T, &U, &F, &D);    
    for (i = 1; i <= T; i++)
    {
        getchar();
        ch = getchar();
        if ((ch == 'u') || (ch == 'd'))
        {
            s += U + D;
        }
        else
        {
            s += 2 * F;
        }
        if (flag)
        {
            if (s <= M)
            {
                maxi = i;
            }
            else
            {
                flag = 0;
            }
        }
    }

    printf("%d", maxi);

    return(0);
}


只得到20分:
测试数据 #1: Accepted, time=0ms, mem=636KB, score=10
测试数据 #2: Wrong Answer, time=0ms, mem=640KB, score=0
测试数据 #3: Wrong Answer, time=0ms, mem=640KB, score=0
测试数据 #4: Wrong Answer, time=0ms, mem=636KB, score=0
测试数据 #5: Wrong Answer, time=0ms, mem=640KB, score=0
测试数据 #6: Accepted, time=0ms, mem=636KB, score=10
测试数据 #7: Wrong Answer, time=0ms, mem=636KB, score=0
测试数据 #8: Wrong Answer, time=0ms, mem=640KB, score=0
测试数据 #9: Wrong Answer, time=0ms, mem=636KB, score=0
测试数据 #10: Wrong Answer, time=0ms, mem=636KB, score=0
Time = 0ms Mem = 640KB Score= 20

改了一下,换了个思路,第二次代码:
程序代码:
#include<stdio.h>
#include<malloc.h>
int main(void)
{
    int    M, T, U, F, D;
    char   *p1 = NULL;
    int    *p2 = NULL;
    int    i;
    int    s = 0;

    scanf("%d%d%d%d%d", &M, &T, &U, &F, &D);
    p1 = (char *)malloc(T * sizeof (char));
    p2 = (int *)malloc(T * sizeof (int));
    for (i = 0; i < T; i++)
    {
        getchar();
        *(p1 + i) = getchar();
        if (*(p1 + i) == 'f')
        {
            s += 2 * F;
        }
        else
        {
            s += U + D;
        }
        *(p2 + i) = s;
    }
    for (i = 1; (i < T) && (*(p2 + i -1) <= M); i++)
    {}
    i--;
    printf("%d", i);
    free(p1);
    free(p2);
    return(0);
}



这次好点,50分:
测试数据 #1: Accepted, time=0ms, mem=636KB, score=10
测试数据 #2: Accepted, time=0ms, mem=640KB, score=10
测试数据 #3: Wrong Answer, time=0ms, mem=636KB, score=0
测试数据 #4: Accepted, time=0ms, mem=640KB, score=10
测试数据 #5: Accepted, time=0ms, mem=640KB, score=10
测试数据 #6: Accepted, time=0ms, mem=640KB, score=10
测试数据 #7: Wrong Answer, time=0ms, mem=640KB, score=0
测试数据 #8: Wrong Answer, time=0ms, mem=640KB, score=0
测试数据 #9: Wrong Answer, time=0ms, mem=640KB, score=0
测试数据 #10: Wrong Answer, time=0ms, mem=640KB, score=0
Time = 0ms Mem = 640KB Score= 50

谁有耐心能帮忙查看下,为什么错了,感激不尽!
搜索更多相关主题的帖子: 奶牛 农场 
2014-02-27 22:56
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
收藏
得分:0 
回复 2楼 beyondyf
maxi 初始化了, 也是20分
测试数据 #1: Accepted, time=0ms, mem=636KB, score=10
测试数据 #2: Wrong Answer, time=0ms, mem=640KB, score=0
测试数据 #3: Wrong Answer, time=0ms, mem=640KB, score=0
测试数据 #4: Wrong Answer, time=0ms, mem=640KB, score=0
测试数据 #5: Wrong Answer, time=0ms, mem=636KB, score=0
测试数据 #6: Accepted, time=0ms, mem=640KB, score=10
测试数据 #7: Wrong Answer, time=0ms, mem=636KB, score=0
测试数据 #8: Wrong Answer, time=0ms, mem=640KB, score=0
测试数据 #9: Wrong Answer, time=0ms, mem=640KB, score=0
测试数据 #10: Wrong Answer, time=0ms, mem=640KB, score=0
Time = 0ms Mem = 640KB Score= 20

未知令人期待!
2014-02-28 00:22
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
收藏
得分:0 
回复 2楼 beyondyf
测试数据 #1: Accepted, time=0ms, mem=636KB, score=10
测试数据 #2: Accepted, time=0ms, mem=636KB, score=10
测试数据 #3: Accepted, time=0ms, mem=640KB, score=10
测试数据 #4: Accepted, time=0ms, mem=640KB, score=10
测试数据 #5: Accepted, time=0ms, mem=640KB, score=10
测试数据 #6: Accepted, time=0ms, mem=640KB, score=10
测试数据 #7: Accepted, time=0ms, mem=640KB, score=10
测试数据 #8: Accepted, time=0ms, mem=636KB, score=10
测试数据 #9: Accepted, time=0ms, mem=636KB, score=10
测试数据 #10: Accepted, time=0ms, mem=640KB, score=10
Time = 0ms Mem = 640KB Score= 100

这是版主的结果
膜拜一个

未知令人期待!
2014-02-28 00:24
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
收藏
得分:0 
回复 6楼 rjsp
测试数据 #1: Accepted, time=0ms, mem=636KB, score=10
测试数据 #2: Accepted, time=0ms, mem=640KB, score=10
测试数据 #3: Accepted, time=0ms, mem=636KB, score=10
测试数据 #4: Accepted, time=0ms, mem=636KB, score=10
测试数据 #5: Accepted, time=0ms, mem=640KB, score=10
测试数据 #6: Accepted, time=0ms, mem=636KB, score=10
测试数据 #7: Accepted, time=0ms, mem=640KB, score=10
测试数据 #8: Accepted, time=0ms, mem=640KB, score=10
测试数据 #9: Accepted, time=0ms, mem=636KB, score=10
测试数据 #10: Accepted, time=0ms, mem=640KB, score=10
Time = 0ms Mem = 640KB Score= 100


未知令人期待!
2014-02-28 17:42
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
收藏
得分:0 
回复 5楼 klapset
哈希表 没有接触过。。 2楼版主是用的这个方法吗?

未知令人期待!
2014-02-28 17:46
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
收藏
得分:0 
我找到原因了,,,,
 原因在这里:

getchar();
ch = getchar();

输入格式里面我猜可能在某些行的字母后面有的会有几个空格吧 (真坑

两位版主的字符读取形式:

gets((char *)c)[0]

scanf( " %c", &S );

附上一张坑爹的提交记录 结贴了
图片附件: 游客没有浏览图片的权限,请 登录注册

未知令人期待!
2014-02-28 18:46
快速回复:Tyvj的一个题,代码不知道哪里错了,求帮忙查看
数据加载中...
 
   



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

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