天天看點

資訊學奧賽C++語言: 跑步

【題目描述】

為了迎接學校的一個長跑比賽,小明每天堅持晨練,為了适應各種長跑比賽場地,他在小區找到了一條能應對各種地形的跑道,這條跑道包括上坡、平地和下坡。

他把選擇的跑道劃分成T個機關長度,每個機關長度的跑道地形可能是上坡、平地或者下坡。輸入中使用三個字母來表示每個機關長度跑道的地形情況,u表示是上坡,f表示是平地,d表示是下坡。

現在已知小明跑步的時間為M秒,每跑一個機關長度的上坡需要U秒、平地需要F秒、下坡需要D秒。

請幫小明計算一下,在M秒内最遠能跑多遠。以整數為機關,比如最後一機關長度跑道小明能跑一部分,但不能跑完整個機關長度跑道,則這一部分就不算。請認真分析輸入輸出樣例。

【輸入】

第一行包含五個整數,并且兩兩之間用空格隔開,分别為M,T,U,F和D。

從2~T+1行:每行一個字母,表示這個機關的地形。

【輸出】

一個整數表示他能跑的最遠距離。

【輸入樣例】

樣例1:

10 5 3 2 1

u

f

u

d

f

樣例2:

8 5 4 2 1

f

f

f

d

d

【輸出樣例】

樣例1:

4

樣例2:

5

代碼

#include<cstdio>
using namespace std;
int s,U,F,D;
long M,T;
char n;
int main()
{
	scanf("%ld%ld%d%d%d",&M,&T,&U,&F,&D);
	for(int i=0;i<T;i++)
	{
		scanf(" %c",&n);
		if(n=='u')
		M-=U;
		if(n=='f')
		M-=F;	
		if(n=='d')
		M-=D;
		if(M>=0)
			s++;
		else
			break;		
		}	
	printf("%d",s);
	return 0;
}