[NOIP2005 普及组] 陶陶摘苹果

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

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

输入格式
输入包括两行数据。第一行包含 10 1010 个 100 100100 到 200 200200 之间(包括 100 100100 和 200 200200 )的整数(以厘米为单位)分别表示 10 1010 个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个 100 100100 到 120 120120 之间(包含 100 100100 和 120 120120 )的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。

输出格式
输出包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。

样例 #1
样例输入 #1
100 200 150 140 129 134 167 198 200 111
110
1
2
样例输出 #1
5
1
提示
【题目来源】

NOIP 2005 普及组第一题

题目解析
题目大意
本题是树上有十个苹果,长在不同的高度上。陶陶有一把高三十公分的凳子,求出他借助凳子最高可以摘到几个苹果。

题目分析
题目让用户输入十个苹果的高度和陶陶的身高,那么只需要依次遍历每个苹果的高度,和陶陶身高+凳高作比较,如果身高+凳高大于苹果高度,则统计他可以摘到的数量加一。

接下来就是考虑如何存储这十个苹果和让它们比较。
我们首先想到的就是使用一个一维数组来存储这十个苹果,然后通过依次遍历数组来判断大小。
其次可以考虑使用栈结构先存储苹果的信息,然后再依次出栈进行比较。

代码题解
解法1:数组

#include <iostream> using namespace std; int fun()//编写函数fun来处理异常输入 { int n=0;//用户每次输入的苹果高度 cin>>n; if(n<100||n>200)//非法输入 { cout<<"error"<<endl; return fun();//递归重新输入 } else { return n; } } int main() { int count=0; int a[10]; for(int i=0;i<10;i++) { a[i]=fun(); } int hight;//陶陶身高 cin>>hight; hight+=30;//加了凳子后的总高度 for(int j=0;j<10;j++) { if(a[j]<=hight)//依次把苹果高和人的总高度比较 { count++; } } cout<<count; return 0; }
posted @ 2024-02-29 12:51  258333  阅读(39)  评论(0编辑  收藏  举报