当前位置:   article > 正文

PTA 7-39 龟兔赛跑_pta龟兔赛跑

pta龟兔赛跑

 方案一:直接算龟兔跑的总路程,然后最后计算超出的路程,感觉这样比较简单。

  1. #include<stdio.h>
  2. int main(void)
  3. {
  4. int s1=0,s2=0;//s1乌龟,s2兔子
  5. int wait=1;//wait是最后一次是乌龟跑了还是乌龟兔子都跑了
  6. int t,T;
  7. t=0;
  8. scanf("%d",&T);
  9. while(t<T){
  10. if(s1>s2){
  11. s2+=3*30;
  12. t+=30;
  13. wait=0;
  14. }else{
  15. s1+=9*10;
  16. s2+=3*10;
  17. t+=10;
  18. wait=1;
  19. }
  20. }
  21. if(t>T){//这是判断最后一次有没有等
  22. if(wait){//最后一次都跑了
  23. s2-=(t-T)*9;
  24. s1-=(t-T)*3;
  25. }else{//最后一次只有乌龟跑了
  26. s2-=(t-T)*3;
  27. }
  28. }
  29. if(s1>s2)printf("^_^ %d",s1);
  30. else if(s2>s1)printf("@_@ %d",s2);
  31. else printf("-_- %d",s1);
  32. return 0;
  33. }

方案二:利用rest来表示状态,同时把兔子时间与外界时间分离,实现兔子休息。

  1. #include<stdio.h>
  2. int main(void)
  3. {
  4. int T;
  5. int t=0;
  6. int s1=0,s2=0;
  7. int rtime=0;//兔子的时间
  8. int rest=0;//兔子是否在休息的状态
  9. scanf("%d",&T);
  10. while(t!=T){
  11. s2+=3;//乌龟跑
  12. if(!rest){//如果兔子不在休息
  13. s1+=9;//兔子跑
  14. rtime++;//兔子时间+
  15. }
  16. t++;
  17. if(t%10==0&&!rest){
  18. if(s2>s1){//如果兔子在乌龟前面
  19. rest=1;//休息
  20. rtime+=30;//兔子时间+30
  21. }
  22. }
  23. if(t==rtime){//时间赶上兔子时间
  24. rest=0;//兔子退出休息
  25. }
  26. }
  27. if(s1>s2) printf("^_^ %d",s1);
  28. else if(s2>s1) printf("@_@ %d",s2);
  29. else printf("-_- %d",s1);
  30. return 0;
  31. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/64449
推荐阅读
相关标签
  

闽ICP备14008679号