求助
  • 板块题目总版
  • 楼主ECEG
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/8/31 16:25
  • 上次更新2023/10/27 12:57:45
查看原帖
求助
601122
ECEG楼主2022/8/31 16:25

P1215

#include <bits/stdc++.h>
using namespace std;
int jk[4],oi[4],vis[24][24],ans[24];
void dfs(){
	int p,q;
	if(jk[1]==0)
		ans[jk[3]]=1;
	for(int i=1;i<=3;++i)
		if(jk[i]!=0)
			for(int j=1;j<=3;++j){
				if(i!=j)
					p=jk[i];q=jk[j];
					if(oi[j]-jk[j]<=jk[i]){
						jk[i]=jk[i]-oi[j]+jk[j];
						jk[j]=oi[j];
						if(!vis[jk[1]][jk[2]])vis[jk[1]][jk[2]]=1,dfs();
						jk[i]=p;jk[j]=q;
					}
					else{
						jk[i]=0;
						jk[j]=jk[j]+jk[i];
						if(!vis[jk[1]][jk[2]])vis[jk[1]][jk[2]]=1,dfs();
						jk[i]=p;jk[j]=q;
					}
			}
}
int main(){
	cin>>oi[1]>>oi[2]>>oi[3];jk[3]=oi[3];
	vis[0][0]=1;
	dfs();
	for(int i=1;i<=20;++i)if(ans[i])cout<<i<<" ";
	return 0;
}
2022/8/31 16:25
加载中...