使用dfs搜索,搜索9个数字,注意回溯。。。最后判断是否符合条件,输出。
#include<bits/stdc++.h> using namespace std; int t[10],a[10]; void print() { int b=a[1]*100+a[2]*10+a[3],c=a[4]*100+a[5]*10+a[6],d=a[7]*100+a[8]*10+a[9]; if(b*2==c&&b*3==d) printf("%d %d %d ",b,c,d); return; } void dfs(int k) { if(k==10){print();return;} for(int i=1;i<=9;i++) //深搜1~9数字 if(t[i]==0) { a[k]=i; t[i]=1; dfs(k+1); t[i]=0; } } int main(){ dfs(1); return 0; }