pta 龟兔赛跑 题解

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

输入格式:

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

输出格式:

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

输入样哩:

242

输出样例:

@_@ 726

 结题思路:

根据输入的时间,进行for循环,因为乌龟会一直前进,因而不需要if else语句,而兔子则有两种情况,通过if语句来进行分类处理,设置flag变量作为标志,如果flag为0,则兔子进行正常的前进,在这个if语句又内嵌了另一个if else语句,通过变量j来“十分钟”触发一次if语句,如果兔子比较快,则flag为1,设置sleep为0,j重新置0,如果乌龟比较快,则只让j置零,然后再进行下一步的for循环。

最后则通过if语句,根据乌龟和兔子所走的路程,输出不同结果

代码:

#include<iostream>
using namespace std;

int main(){
	//a是乌龟,b是兔子 
	int n, a = 0, b = 0, sleep = 0, flag = 0, i, j = 0;
	cin>>n;
	for(i = 1;i <= n;i++){
		a = a + 3;
		if(flag == 0){
			b = b + 9;
			j++;
			if(j == 10){
				if(a >= b){
					j = 0;
				}else{
					flag = 1;
					sleep = 0;
					j = 0; 
				}
			}
		}else{
			sleep++;
			if(sleep == 30){
				flag = 0;
			}
		}
	} 
	
	if(a > b){
		cout<<"@_@ "<<a;
	}else if(a < b){
		cout<<"^_^ "<<b;
	}else{
		cout<<"-_- "<<a;
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_51890646/article/details/125837824
今日推荐