(刘禹)母亲的牛奶~哈哈~

据说~DFS搜索...

题目链接:点击打开链接

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int f[21][21][21];
int a,b,c;
void DFS(int x,int y,int z)
{
	if(f[x][y][z])return;
	f[x][y][z] = 1;
	
	if(a-x>0)
	{
		if(y>0)
			DFS(x+y>a?a:x+y,x+y>a?(x+y-a):0,z);
		if(z>0)
			DFS(x+z>a?a:x+z,y,x+z>a?(x+z-a):0);
	}
	if(b-y>0)
	{
		if(x>0)
			DFS(x+y>b?(x+y-b):0,y+x>b?b:x+y,z);
		if(z>0)
			DFS(x,z+y>b?(z+y-b):0,y+z>b?b:z+y);
	}
	if(c-z>0)
	{
		if(x>0)
			DFS(z+x>c?(z+x-c):0,y,x+z>c?c:x+z);
		if(y>0)
			DFS(x,z+y>c?(z+y-c):0,y+z>c?c:y+z);
	}
} 

int main()
{
	
	while(cin>>a>>b>>c)
	{
		memset(f,0,sizeof(f));
		DFS(0,0,c);
		int flag = 0;
		for(int i=b;i>=0;i--)
		for(int j=20;j>=0;j--)
		{
			if(f[0][i][j])
			{
				if(flag)
					cout<<" ";
				else
					flag = 1;
				cout<<j;
			}
		}
		cout<<endl;
	}
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值