• 龟兔赛跑


    龟兔赛跑 

    乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?

    输入格式:

    输入在一行中给出比赛时间T(分钟)。

    输出格式:

    在一行中输出比赛的结果:乌龟赢输出@_@,兔子赢输出^_^,平局则输出-_-;后跟1空格,再输出胜利者跑完的距离。

    输入样例:

    242
    

    输出样例:@_@ 726


    1)实验代码

    #include<stdio.h>
    int main()
    {
     int T,i;
     int rabbitT=0;    //兔子跑的时间
     scanf("%d",&T);
     if(T<10)    //时间小于10分钟,兔子赢
     {
      printf("^_^ %d ",T*9);
      return 0;
     }
     rabbitT=10;
     for(i=10;i<=T;i++)  //从第10分钟开始
     {
      if(i%10==0)    //每10分钟回头,比较
      {
       if(rabbitT*9>i*3 && T-i>=30)    //兔子跑的距离大于乌龟 ,剩余时间不小于30分钟
       {
        i=i+29;    //不是i=i+30,因为for循环中还有个i++
       }
       if(rabbitT*9>i*3 && T-i<30)    // 兔子跑的距离大于乌龟 ,剩余时间小于30分钟
       {
        i=T;
        break;
       }
       if(rabbitT*9<=i*3 && T-i>=10)  //兔子跑的距离小于乌龟,剩余时间不小于10分钟,兔子真正跑的时间+10
       {
        rabbitT=rabbitT+10;
        i=i+9;
       }
       if(rabbitT*9<=i*3 && T-i<10)  //兔子跑的距离小于乌龟,剩余时间小于10分钟,兔子真正跑的时间+T-i
       {
        rabbitT=rabbitT+(T-i);
        i=T;
        break;
       }
      }
     }
     if(rabbitT*9>i*3)
      printf("^_^ %d ",rabbitT*9);
     if(rabbitT*9<i*3)
         printf("@_@ %d ",i*3);
     if(rabbitT*9==i*3)
         printf("-_- %d ",i*3);
         return 0;
    }

    
    

    2)设计思路

    
    

    1.定义变量

    
    

    2.时间小于10分钟,兔子赢

    
    

    3.for循环,兔子跑的时间从第10分钟开始

    
    

    4.每10分钟回头,比较

    
    

    5.兔子跑的距离大于乌龟 ,剩余时间不小于30分钟,i=i+29

    
    

    6.兔子跑的距离大于乌龟 ,剩余时间小于30分钟,i=T,跳出循环

    
    

    7.兔子跑的距离小于乌龟 ,剩余时间不小于10分钟,兔子真正跑的时间+10,i=i+9

    
    

    8.兔子跑的距离小于乌龟 ,剩余时间小于10分钟,兔子真正跑的时间+T-i,i=T,跳出循环

    
    

    9.最后比较兔子和乌龟跑的距离,输出答案

    
    

    3)本题调试过程碰到问题及解决办法

    
    

    逻辑有点不清,漏了条件 

  • 相关阅读:
    uva-712 S-Trees
    Liunx下文件权限详解
    uva-699 The Falling Leaves
    Oracle sql loader 使用案例
    设计模式学习--迭代器模式(Iterator Pattern)和组合模式(Composite Pattern)
    XML 简单介绍
    UVA 11107(Life Forms-后缀数组+二分)
    SRM 212 Div II Level One: YahtzeeScore
    HDU 5695 Gym Class 拓扑排序
    HDU 5694 BD String 迭代
  • 原文地址:https://www.cnblogs.com/xirfly/p/10094165.html
Copyright © 2020-2023  润新知