用1,2,3,…,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3。按照“abc def ghi”的格式输出所有解,每行一个解。提示:不必太动脑筋。
#include<stdio.h>
int main(){
int i1,i2,i3,j1,j2,j3,k1,k2,k3,count;
for(int i=100;i<=333;i++){
count=0;
int j=i*2;
int k=i*3;
i1=i%10,i2=i/10%10,i3=i/100;
j1=j%10,j2=j/10%10,j3=j/100;
k1=k%10,k2=k/10%10,k3=k/100;
for(int c=1;c<10;c++){
if(c==i1)
count++;
else if(c==i2)
count++;
else if(c==i3)
count++;
else if(c==j1)
count++;
else if(c==j2)
count++;
else if(c==j3)
count++;
else if(c==k1)
count++;
else if(c==k2)
count++;
else if(c==k3)
count++;
}
if(count!=9) continue;
printf("%d %d %d\n",i,j,k);
count=0;
}
return 0;
}
1.首先确保abc:def:ghi=1:2:3,即将abc作为循环变量,则def=2*abc,ghi=3*abc,减少循环次数。
2.确保每个数字只用一次。使用计数器count统计所有数字出现的次数,若不为9,则说明有重复数字出现。