题解(dfs)
2024-10-08 00:10:32
发布于:四川
3阅读
0回复
0点赞
把上一道题的拿过来改出来的
加了ABC放在判断出,又加了h判断是否输出
注意是No!!!不是NO!!!
#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;
bool book[10];
vector<int> sum1(10,0);//可以用数组
int h,A,B,C;
void dfs(int n){
if(n==10) {
int a=sum1[1]*100+sum1[2]*10+sum1[3];
int b=sum1[4]*100+sum1[5]*10+sum1[6];
int c=sum1[7]*100+sum1[8]*10+sum1[9];
if(A*b==a*B&&c*A==a*C){//用a*c=b*d可以有效避免出现0的问题
cout<<a<<' '<<b<<' '<<c<<'\n';
h++;//有输出就+1,也可以用bool
}
return;
}
for(int i=1;i<=9;i++){
if(book[i]==0){
sum1[n]=i,book[i]=1;
dfs(n+1);
book[i]=0;
}
}
return;
}
int main()
{
cin>>A>>B>>C;
dfs(1);
if(h==0) cout<<"No!!!";//是No(小写)!!!
return 0;
}
还是那句话,欢迎大佬指错,或者优化
这里空空如也
有帮助,赞一个