跟火柴棒问题、全排列问题类似
但是我觉得使用深度搜索会更好(最近在练习这些)
最基础的深度搜索,对回溯·1没啥要求,return就完事了
一定要看清楚No的大小写
上代码:
#include<stdio.h>
int a,b,c;
int e[10];//刨去0,1-9
int book[10]={0};
int judge=0;
void dfs(int step){
if(step==10){
if(b*(e[1]*100+e[2]*10+e[3])==a*(e[4]*100+e[5]*10+e[6])&&c*(e[1]*100+e[2]*10+e[3])==a*(e[7]*100+e[8]*10+e[9]))
{ judge=1;
printf("%d%d%d %d%d%d %d%d%d\n",e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9]);
}
return;
}
for(int i=1;i<=9;i++){
if(book[i]==0){
e[step]=i;
book[i]=1;
dfs(step+1);
book[i]=0;
}
}
}
int main(){
scanf("%d %d %d",&a,&b,&c);
dfs(1);
if(!judge){
printf("No!!!");
}
return 0;
}