pta 龟兔赛跑 题解

3 篇文章 0 订阅

乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进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;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值