首页 新闻 会员 周边

一道非常水的题目——蜗牛爬金字塔

0
悬赏园豆:10 [已解决问题] 解决于 2020-06-08 13:02

题目:

 

代码吐下

#include <iostream>
using namespace std;
int main(){
    int H,i=0,run=0;
    cin>>H;
    if(H>0&&H<1000000000){
        while(H-run>10){
            run=run+5;i++;
        }
        i++;
        cout<<i<<endl;
    }
    return 0;
}

学校的OJ判我WA(结果错误)求问原因

一条C鱼的主页 一条C鱼 | 初学一级 | 园豆:194
提问于:2020-06-07 18:59
< >
分享
最佳答案
0

我觉得可能是我的代码不符合普遍的思路....

下面是我换了一种思路的代码,这个代码通过了OJ的测试

#include<iostream>
using namespace std;
int main() {
    int H;
    cin>>H;
    {
        int a=H/10;/*分两种情况 */
        if(H%10==0)//最后一步刚好是上去的 
            cout<<a*2-1<<endl;
        else//先上去没有达到 滑下来了 又上去一次 
            cout<<a*2<<endl;
    }
}

不过是个佬就知道这么写了....

希望有大佬能看出了我原来的代码的错误!!!先感谢您的指正了

一条C鱼 | 初学一级 |园豆:194 | 2020-06-08 10:27

第一种代码和第二种的代码区别在于,在1到9米的时候,第二种输出0天,第一种输出1天。

在其他长度的情况下,两种方法输出的结果一样,

从这种情况来看,我觉得错的不是你,你的代码没有任何问题,而是出OJ题目的人没有考虑好测试样例
又或者我们不能理解好题意?(0天是什么鬼)
不必纠结哟

Conan-jine | 园豆:1272 (小虾三级) | 2020-06-08 12:43

@Conan-jine: 嗯谢谢鼓励ヾ(๑╹◡╹)ノ"....不过1到9我输出的也是1...

一条C鱼 | 园豆:194 (初学一级) | 2020-06-08 12:58

我的代码给大家带来困扰了还是赶快结贴吧.....要是有以后的小朋友在OJ上刷到这题题也纠结这种思路的时候也有个参照......

一条C鱼 | 园豆:194 (初学一级) | 2020-06-08 13:00

@Conan-jine: 不对不对我弄错了,原来您说的是我第二个代码,的确是有问题的!!!怎么这种代码还过了......

一条C鱼 | 园豆:194 (初学一级) | 2020-06-08 13:04
其他回答(4)
0

你这必然是错误的啊,100米,19天就完了而不是20天。。。

收获园豆:4
顾晓北 | 园豆:10844 (专家六级) | 2020-06-07 19:43

您是不是没有运行我的代码?我的结果的确是19

支持(0) 反对(0) 一条C鱼 | 园豆:194 (初学一级) | 2020-06-07 20:00

@一条C鱼: 我没有c++环境,没运行你的代码,细看了一下,好像没什么问题,学校判定的依据是什么?

支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2020-06-07 20:22

@一条C鱼: 或者说,学校有测试用例?

支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2020-06-07 20:22

@顾晓北: 嗯嗯,或许是因为不符合通例。这是真的迷.....还是感谢.....

支持(0) 反对(0) 一条C鱼 | 园豆:194 (初学一级) | 2020-06-08 08:52
0

你这个代码有缺陷,题目问的是第几天到达,所以只要那一天的白天到达了就行了,不用管晚上会掉多少。

而你的代码的意思是每天爬5米,结算的是每天晚上蜗牛总共爬了多少米。

问题就出来了,假如有一天白天蜗牛爬到了这个高度,但是晚上掉下来了,你的代码就会认为蜗牛没有爬到

收获园豆:4
Conan-jine | 园豆:1272 (小虾三级) | 2020-06-08 08:24

嗯嗯,我考虑了这个问题,但是我的代码是前一天晚上走到离金字塔大于等于10m的地方才结束循环,所以当只剩10m时,我的循环会结束,最后再加1,这方面我是没有问题的。

支持(0) 反对(0) 一条C鱼 | 园豆:194 (初学一级) | 2020-06-08 08:50

@一条C鱼: 你试着把判断H的大小去掉,没必要,

支持(0) 反对(0) Conan-jine | 园豆:1272 (小虾三级) | 2020-06-08 09:53

@Conan-jine: 感谢.....但是还是没有用.....

支持(0) 反对(0) 一条C鱼 | 园豆:194 (初学一级) | 2020-06-08 10:22
0

我没有运行你的代码,不过有些建议,既然裁判说是结果错误,那我建议你输入一些临界值试试有没有错误,比如:1和999999999

收获园豆:2
会长 | 园豆:12401 (专家六级) | 2020-06-08 09:27

好的感谢.....

支持(0) 反对(0) 一条C鱼 | 园豆:194 (初学一级) | 2020-06-08 10:22
0

int high;
cin>>high;
int day = 1;
int dis = 0;
while(1)
{
dis +=10;
if(dis>high)
{
cout<<day;
return ;
}
dis -=5;
day++;
}

crazy灬小希 | 园豆:202 (菜鸟二级) | 2021-11-22 19:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册