思路:做全排列,然后输出满足条件的
注意:这里的比值处理,必须要用double进行强制转换
参考代码:
#include<cstdio>
#include<algorithm>
using namespace std;
int ar[9]={1,2,3,4,5,6,7,8,9};
int p=0,t1,t2,t3;
int s1,s2,s3;
bool check(int l1,int l2 ,int l3){
return double(t3)/t2==double(l3)/l2&&double(t2)/t1==double(l2)/l1&&double(t3)/t1==double(l3)/l1;
}
void permutation(int k){
if(k==9){
int l1,l2,l3;
l1=ar[0]*100+ar[1]*10+ar[2];
l2=ar[3]*100+ar[4]*10+ar[5];
l3=ar[6]*100+ar[7]*10+ar[8];
if(check(l1,l2,l3)){
printf("%d %d %d\n",l1,l2,l3);
p++;
}
}
for(int i=k;i<9;i++){
swap(ar[i],ar[k]);
permutation(k+1);
swap(ar[i],ar[k]);
}
}
int main(){
scanf("%d %d %d",&t1,&t2,&t3);
permutation(0);
if(p==0){
printf("No!!!\n");
}
return 0;
}