萌新求助,大红大紫
查看原帖
萌新求助,大红大紫
151647
sycqwq楼主2020/8/13 16:19

rt

样例1过了

样例2莫名re

求助

#include<bits/stdc++.h>
using namespace std;
int a,b,c,s[500],k=0;
int f[25][25][25];
void dfs(int x,int y,int z)
{
	if(f[x][y][z])
	{
		return;
	}
	f[x][y][z]=1;
	if(x==0)
	{
		s[++k]=z;
	}
	if(z)
	{
		if(b>y)
		dfs(x,min(b,y+z),(y+z)<=b?0:(z+y-b));
		if(a>x)
		dfs(min(a,z+x),y,(z+x)<=a?0:(x+z-a));
	}
	if(x)
	{
		if(b>y)
		{
			dfs((x+y)<=b?0:(x+y-b),min(b,x+y),z);
		}
		if(c>z)
		{
			dfs((x+z)<=c?0:(x+z-b),y,min(c,x+z));
		}
	}
	if(y)
	{
		if(a>x)
		{
			dfs(min(a,x+y),(x+y)<=a?0:(x+y-b),z);
		}
		if(z>c)
		{
			dfs(x,(y+z)<=c?0:(y+z-b),min(c,y+z));
		}
	}
}
int main() {
	cin>>a>>b>>c;
	dfs(0,0,c);
	sort(s+1,s+k+1);
	for(int i=1;i<=k;i++)
	{
		if(s[i]!=0&&s[i]!=s[i-1])
			cout<<s[i]<<' ';
	}
	return 0;
}
2020/8/13 16:19
加载中...