sczh @ 2019-06-23 13:39:24
这道题和老版的三连击我感觉差不多的,于是就用的DFS······请大神指点一下!!!哪有错呢?
#include<bits/stdc++.h>
using namespace std;
bool flag=false;
int a,b,c,s[15],vis[15];
void print(){
cout<<s[1]<<s[2]<<s[3]<<' '<<s[4]<<s[5]<<s[6]<<' '<<s[7]<<s[8]<<s[9]<<endl;
}
bool check(){
double n1=(s[1]*100+s[2]*10+s[3])/a,n2=(s[4]*100+s[5]*10+s[6])/b,n3=(s[7]*100+s[8]*10+s[9])/c;
if(n1==n2&&n2==n3){
flag=true;
return true;
}
return false;
}
void dfs(int d){
if(d==10){
if(check()==true)
print();
return;
}
for(int i=1;i<=9;i++){
if(vis[i])
continue;
vis[i]=1;
s[d]=i;
dfs(d+1);
vis[i]=0;
}
}
int main(){
cin>>a>>b>>c;
dfs(1);
if(flag==false)
cout<<"No!!!";
return 0;
}
by 灵光一闪 @ 2019-06-23 14:00:30
@算法披萨
要写成if(!flag)
虽然这不是重点
by sczh @ 2019-06-23 14:43:10
○| ̄|_
by 1saunoya @ 2019-06-23 15:17:05
神仙题 看不懂 反正瞎搜就AC了
by 一言难尽 @ 2019-07-03 15:06:20
我也四十分