#include <bits/stdc++.h>
using namespace std;
int a,b,c;int ans;
bool maze[12];int mp[12];
int vis(int ad){//这个是要取得每一个我们要的数字,在dfs中只是对于这个所有的可能排了序并存在了mp中
int sum=0;
for(int i=ad*3-2;i<=ad*3;i++){//这个就是3个数,并且根据答案可以判断是从小到大的
sum*=10;
sum+=mp[i];
}
return sum;
}
void dfs(int x){
if(x>10) return ;
if(x==10&&vis(2)*a==vis(1)*b&&vis(1)*c==vis(3)*a){
printf("%d %d %d\n",vis(1),vis(2),vis(3));
ans++;//记录数据总数。
}
for(int i=1;i<=9;i++){
if(!maze[i]){
maze[i]=true;
mp[x]=i;
dfs(x+1);
maze[i]=false;
mp[x]=0;
}
}
}
int main(){
cin>>a>>b>>c;
//现在是构建一个dfs搜索一下,依据题意保证所有数字的对应关系
dfs(1);
if(ans==0) printf("No!!!");
return 0;
}
还是一道简单的dfs深搜,写了!!!