caojiaming @ 2022-09-22 20:41:59
#include<bits/stdc++.h>
using namespace std;
int n=9;
int a[15],b[15];
bool st[15];
int make_num(int a,int b,int c){
return a*100+b*10+c;
}
void dfs(int x,int b1,int b2,int b3){
if(x==n+1){
for(int i=1;i<=n;i+=3)
b[i/3+1]=make_num(a[i],a[i+1],a[i+2]);
if(b[1]*b3/b1==b[3]&&b[1]*b2/b1==b[2]){
printf("%d %d %d\n",b[1],b[2],b[3]);
}
}
for(int i=1;i<=9;i++){
if(!st[i]){
a[x]=i;
st[i]=true;
dfs(x+1,b1,b2,b3);
st[i]=false;
}
}
}
int main()
{
int b1,b2,b3;
cin>>b1>>b2>>b3;
dfs(1,b1,b2,b3);
return 0;
}
by Rosaya @ 2022-09-22 20:48:59
整数除法有下取整,这个判定可能会错。
by caojiaming @ 2022-09-22 20:50:40
还有如果无解,输出No!!!。 用主函数的递归就行了 可RE咋办呢
by Failure_Terminator @ 2022-09-22 21:00:14
@caojiaming 您套的是我上次现场写的板子吗
by caojiaming @ 2022-09-22 21:06:26
我整理了一下写出的