题目描述
清明节,又称祭祖节,在每年4月4日至6日之间,是祭祀、祭祖和扫墓的节日。小明的爸爸妈妈决定清明假期带着他回老家扫墓。小明的爸爸一共要开车行驶 1000 千米才能到家,现在沿途有N个旅馆,为了安全起见,每天晚上都不开车,住在旅馆里(晚上不可以睡车里)。聪明的小明已经提前用地图查找好了每个旅馆的位置,并用离起点的距离来标识
回家路途漫漫,要求每天至少行驶 A 公里,但是为了安全起见,要求每天最多只能行驶 B 公里。小明想知道一共有多少种回家方案。
输入格式
第一行输入一个整数 A,第二行输入一个整数 B第三行输入一个整数 表示沿途有N个旅馆,接下来
N 行,每行一个整数 s,表示旅馆离起点的距离0<s<1000。注意:没有任意两个旅馆在同一位置。
输出格式
输出一共有多少种回家方案。(数据保证一定有至少一种回家方案,不用担心小明回不去了)
样例
Input 1
200
500
4
100
420
640
790
Output 1
2
样例解释
对于样例:
方案一:第一天到达位置420的旅馆,第二天到达位置640的旅馆,第三天到达目的地
方案二:第一天到达位置420的旅馆,第二天到达位置790的旅馆,第三天到达目的地
小明回老家c++求解
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
4条回答 默认 最新
关注让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
思路:贪心+暴力枚举 因为要求至少行驶 A 公里,所以我们首先可以遍历一遍旅馆的位置,如果第一个旅馆到出发点的距离小于 A,或者最后一个旅馆到终点的距离小于 A,那么这个问题就无解,直接返回 0。 然后按照旅馆离出发点的位置从小到大排序,然后根据每个旅馆最远只能走 B 公里的限制,贪心地计算出能够在每个旅馆处停留的最远距离 r,即最远停留距离要么是到下一个旅馆的距离,要么是 B(如果下一个旅馆与当前旅馆之间的距离小于 B,则停留在下一个旅馆)。 之后可以使用 DFS 枚举所有的路径,具体的实现可以参考如下代码: C++ 代码本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报