比赛 20151019 评测结果 WWEEEEEEEE
题目名称 爬山 最终得分 0
用户昵称 pangxinying 运行时间 0.639 s
代码语言 C++ 内存使用 0.32 MiB
提交时间 2015-10-19 21:42:27
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <climits>
using namespace std;

int n,d,a,b;
int max1,max2;
int sum;
int len;
int t[2000+10];

void dfs(int x,int y);
int main()
{
	freopen("mountain.in","r",stdin);
	freopen("mountain.out","w",stdout);
	
	cin>>n>>d>>a>>b;
	sum=a;
	
	dfs(sum,1);
	
	cout<<max2-2<<endl;
	return 0;
}
void dfs(int x,int y)
{
	if (y==n)
	{
		if (x==b && max1>max2)
		{
			max2=max1;
		}
		return;
	}
	for (int i=-d; i<=d; i++)
	{
		x+=i;
		len++;
		t[len]=max1;
		if (x<0)
			x=0;
		else if (x>max1)
			max1=x;
			
		dfs(x,y+1);
		max1=t[len];
		len--;
		x-=i;
	}	
}