用1,2,3……9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi = 1:2:3。输出所有解。提示:不必太动脑筋。
分析:利用数组,a[1]~a[9]赋值为0,令a[出现的数字] = 1,若a[1] + a[2] + …… +a[9] == 9,则全部数字都出现。
代码:
#include<stdio.h> int main() { int x,y,z,i,sum; int a[10]={0}; for(x=100;x<333;x++) { sum=0; y=2*x; z=3*x; //令a[出现的数字]=1;次数为1; a[x/100]=a[x/10%10]=a[x%10]=1; a[y/100]=a[y/10%10]=a[y%10]=1; a[z/100]=a[z/10%10]=a[z%10]=1; for(i=1;i<10;i++) sum+=a[i]; if(sum==9) printf("%d\t%d\t%d\n",x,y,z); //把a[]重新置零 for(i=1;i<10;i++) a[i]=0; } return 0; }