早教吧作业答案频道 -->其他-->
小冬冬历险记:小冬冬来到一条河边,河中有排成一直线的几个石墩,每个石墩上面有一枚金币,小冬冬为了凑一些盘缠,决定跳到这些石墩上拿这些金币,读入小冬冬一次跳跃的最大距离和每个
题目详情
小冬冬历险记:小冬冬来到一条河边,河中有排成一直线的几个石墩,每个石墩上面有一枚金币,小冬冬为了凑一些盘缠,决定跳到这些石墩上拿这些金币,读入小冬冬一次跳跃的最大距离和每个石墩离开岸边的距离(不考虑石墩本身的大小,只要一次跳跃的最大距离大于等于石墩的间隔距离就算可以到达),问最多能拿到几枚金币.如下示意图:
输入
第一行:一个整数x,即一次跳跃的最大距离(1≤x≤30)第二行:石墩的个数n(0≤n≤20)第三行:n个整数,用空格隔开,表示每个石墩离开河岸的距离ai(0<ai≤500)
输出
一个整数,即可以拿到的最多金币数
样例输入
5
6
4 8 13 20 25 26样例输出
3
输入
第一行:一个整数x,即一次跳跃的最大距离(1≤x≤30)第二行:石墩的个数n(0≤n≤20)第三行:n个整数,用空格隔开,表示每个石墩离开河岸的距离ai(0<ai≤500)
输出
一个整数,即可以拿到的最多金币数
样例输入
5
6
4 8 13 20 25 26样例输出
3
▼优质解答
答案和解析
算法思想就是:先把石头离岸距离进行排序(由近到远),然后从最近的开始,算间隔距离,看能不能从岸边到达,应该就可以了.到达的判别法是:如果能到达第i块石头,而且第i+1块和第i块的间距不超过x的话,第i+1块即可以到达,否则第i+1块就不能到达.
下面是C语言简单代码:
设result是输出量,x为第一个输入量,n为第二个输入量,a数组为第三个输入量.
// 先排序,采用冒泡排序
int i = 0,j =0,temp = 0;
for (i = 0; i < n; i++)
for (j = 0; j < n - 1 - i; j++)
{
if(a[j] > a[j + 1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
// 开始计数
int result = 0,flag = 1;
if a[0]
下面是C语言简单代码:
设result是输出量,x为第一个输入量,n为第二个输入量,a数组为第三个输入量.
// 先排序,采用冒泡排序
int i = 0,j =0,temp = 0;
for (i = 0; i < n; i++)
for (j = 0; j < n - 1 - i; j++)
{
if(a[j] > a[j + 1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
// 开始计数
int result = 0,flag = 1;
if a[0]
看了 小冬冬历险记:小冬冬来到一条...的网友还看了以下:
有一高楼,每上一层楼需2分钟,每下一层楼需1分30秒,小明家住底层,他从底层于12点25分开始上楼 2020-04-26 …
有一座高楼,每上一层需2.每下一层需1分.小明从13点20分开始不停从底层往上走,到了最高层后又立 2020-04-26 …
有一高楼,每上一层楼需2分钟,每下一层楼需1分30秒,小明家住底层,他从底层于12点25分开始上楼 2020-04-26 …
有一座高楼,小红每上一层需要1.每下一层需要半分钟,她从下午2:45开始不停得往上走,走到最高层立 2020-05-20 …
有一高楼,每上一层需要2分30秒,每下一层需要1分30秒.小红从12:30开始不停地从底层往上走, 2020-05-20 …
有一栋楼,每上一层需2分钟,每下一层需1分30秒,小明与8点30分开是不停地从底层往上走,到了最高 2020-05-21 …
小明家只在四楼,每天早上他要到一楼取一次牛奶.已知小明每天下一层楼需要7秒,每上一层需要10秒.他 2020-06-17 …
有62根火柴,甲乙两人轮流拿,每人一次最少拿1根,最多拿4根.拿最后|根火柴为胜.甲怎样拿保证取胜 2020-06-19 …
11根火柴,拿1或4根,结论证明,有11根火柴,两个人轮流拿,每次一人只能拿1根或者4根,拿到最后 2020-07-07 …
阅读下面文章,完成(1)-(7)题。几件小事——记父亲叶圣陶叶至诚我今年62岁了,可是拿不好筷子。人 2020-12-13 …