https://www.luogu.org/problem/show?pid=1215#sub
暴力模拟多种情况。我是用搜索写的,注意返回条件和约束条件。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
int a,b,c;
int ans[1000],l;
bool f[50][50][50];
void dfs(int x,int y,int z)
{
if(f[x][y][z]) return;
if(x==0) ans[++l]=z;
f[x][y][z]=1;
dfs(x-min(x,b-y),y+min(x,b-y),z);
dfs(x+min(y,a-x),y-min(y,a-x),z);
dfs(x+min(z,a-x),y,z-min(z,a-x));
dfs(x-min(x,c-z),y,z+min(x,c-z));
dfs(x,y-min(y,c-z),z+min(y,c-z));
dfs(x,y+min(z,b-y),z-min(z,b-y));
return;
}
int main()
{
scanf("%d%d%d",&a,&b,&c);
dfs(0,0,c);
sort(ans+1,ans+l+1);
for(int i=1;i<=l;i++)
printf("%d ",ans[i]);
return 0;
}