比赛 20121108 评测结果 EEEEEAEEEE
题目名称 造房子的学问 最终得分 10
用户昵称 日光。 运行时间 0.705 s
代码语言 C++ 内存使用 1.96 MiB
提交时间 2012-11-08 11:54:06
显示代码纯文本
#include<cstdio>
using namespace std;
int n,m;
int l1,l2,l3;
int l;
int ans=0xfffffff;
bool f[4]={false};
int bfs(int temp,int flag)
{
	if(temp==m)
	{
		if(flag<ans) ans=flag;
	}
	else
	{
		for(int r=1;r<=5;r++)
		{
			if(r==1) bfs(n-l,flag+1);
			if(r==2) bfs(n/2,flag+1);
			if(r==3)
			{
				if(f[1]==false)
				{
					f[1]=true;
					bfs(n+l1,flag+1);
					f[1]=false;
				}
				else continue;
			}
			if(r==4)
			{
				if(f[2]==false)
				{
					f[2]=true;
					bfs(n+l2,flag+1);
					f[2]=false;
				}
				else continue;
			}
			if(r==5)
			{
				if(f[3]==false)
				{
					f[3]=true;
					bfs(n+l3,flag+1);
					f[3]=false;
				}
				else continue;
			}
		}
	}
}
int main()
{
	freopen("wood.in","r",stdin);
	freopen("wood.out","w",stdout);
	scanf("%d%d",&n,&m);
	scanf("%d%d%d",&l1,&l2,&l3);
	scanf("%d",&l);
	bfs(n,0);
	printf("%d\n",ans);
	return 0;
}