题目描述
小明决定徒步完成一个N天的远足登山活动。第一天他带上一个大睡袋和足够的食物,从大本营出发。大本营的海拔高度为0,在第N天,他必须回到大本营。在这N天中,他可以在他的大睡袋和简易的帐篷中入睡。
在每天的登山活动中,他可以选择向山顶出发,也可以选择下山(同一天只能选择一种方式),而且有如下两条规则:
1、在登山过程中,他不能走的太快,海拔的升高的过程,空气的含氧量会发生变化,因此每天只能上升A米的海拔。
2、在下山过程中,他也不能走的太快,否则他的膝盖无法承受冲击。每天他只能下降B米的海拔。
例如:某天早晨小明处在470米的海拔位置,A=100且B=200,那么他在这天中可以向上到达570米的位置,也可以下山达到海拔270米的位置,因此一天结束后,他可能处在的海拔位置在270~570米之间。
现在,给定N,A和B,问小明最多能到达海拔多少米的高度。
其实这道题很简单,只是被想复杂了。我的思路就是八个字:能上则上,不然则下。
话不多说,上代码:
#include
#include
using namespace std;
int s=0;
int main()
{
int n,a,b;
cin>>n>>a>>b;
for(int i=1;i<=n;i++)
{
if(a*i>=b*(n-i)&&a*i-b*(n-i)<=a)
{
s=b*(n-i);//能上则上
}
if(a*i<=b*(n-i)&&b*(n-i)-a*i<=b)
{
s=a*i;//不然则下
}
}
cout<
好了,就是这样,如果喜欢,记得点赞或评论!