萌萌摘苹果

描述:

萌萌家的院子里有一棵苹果树,每到秋天树上就会结出一些苹果。苹果成熟的时候,萌萌就会跑去摘苹果。萌萌有个3030厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。

现在已知树上所有苹果到地面的高度,以及萌萌把手伸直的时候能够达到的最大高度,请帮萌萌算一下她能够摘到的苹果的数目以及萌萌能否摘下所有的苹果。假设她碰到苹果,苹果就会掉下来。

输入:

输入包括三行数据。

第一行包含一个整数nn,表示树上的苹果总数,满足1≤n≤201≤n≤20。

第二行包含nn个整数a1⋯ana1⋯an分别表示这nn个苹果到地面的高度(以厘米为单位),满足100≤an≤200100≤an≤200,两个相邻的整数之间用一个空格隔开。

第三行只包括一个整数hh,满足100≤h≤120100≤h≤120,表示萌萌把手伸直的时候能够达到的最大高度(以厘米为单位)。

输出:

输出包括两行

第一行包含一个整数,表示萌萌能够摘到的苹果的数目。

第二行为一个字符串YesNo,如果陶陶能摘下树上所有苹果,请输出Yes,如果不能,请输出No

样例输入:

1
2
3
10
100 200 150 140 129 134 167 198 200 111
110

样例输出:

1
2
5
No

样例输入:

1
2
3
2
100 110
120

样例输出:

1
2
2
Yes

注释:

  • 请注意YesNo首字母大写。
  • 对于第一组样例,萌萌不踩上凳子可以摘下第一个苹果,踩上凳子后可以摘下第四个、第五个、第六个和第十个苹果,合起来一共摘到5个苹果。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <stdio.h>
#define APPLE 255 //设苹果最多255个
int main(){
int i;//循环的i
int bandeng=30;//板凳
int mengmeng;//萌萌身高
int apple;//实际苹果总数
int a[APPLE];//树上的每个苹果的高度
//---------------------------------
int count=0;//计数器
int sub;//减数结果
int flag=1;//标志
scanf("%d",&apple);
while(apple<1||apple>20){
scanf("%d",&apple);//实际苹果总数
}
for(i=0;i<apple;i++){
do{
scanf("%d",&a[i]);
}while(a[i]<100||a[i]>200);//每个苹果的高度
}
scanf("%d",&mengmeng);
while(mengmeng<100||mengmeng>120){
scanf("%d",&apple);//萌萌身高
}
//---------------------------------------
for(i=0;i<apple;i++){
sub=a[i]-mengmeng;
if(sub>0){//萌萌身高不够了
sub=a[i]-(mengmeng+bandeng);
if(sub>0){
flag=0;//FLAG置0
}else{
count++;//加板凳能够到了,计数器+1
}
}else{
count++;//计数器+1
}
}
printf("%d\n",count);
if(flag==0){
printf("No\n");//没摘完
return 0;
}
if(flag=1){
printf("Yes\n");//摘完了
return 0;
}
return 0;
}

解析

其实就是一个简单的输入,然后判定。当然,输入的时候也要判定输入数字的范围。注意使用“while”与“do while”。最后的判定要把逻辑理清楚,哪里要算进去,哪里不算进去。