用1,2,3,...,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要
求abc:def:ghi=1:2:3。按照“abc def ghi”的格式输出所有解,每行一个解。提示:不必
太动脑筋。
刚看到这个题目的时候,我想的就是暴力解决。只是苦苦难找到一个算法。由果到因,不错不错
#include <stdio.h>
#include <string.h>
int main()
{
int x,y,z,a[10]={0,0,0,0,0,0,0,0,0,0},i,s; //初始化数组,定义变量
memset(a,0,sizeof(a));
for(x=123;x<333;x++){
y=2*x; //abc:def=1:2
z=3*x; //abc:ghi=1:3
a[x/100]=a[x/10%10]=a[x%10]=1; //将数组中含有x,y,z中任一数字的数组元素置一
a[y/100]=a[y/10%10]=a[y%10]=1;
a[z/100]=a[z/10%10]=a[z%10]=1;
s=0;
for(i=1;i<10;i++) //将数组中为1的元素加起来,检验和是否为9
s+=a[i];
if(s==9) //如果x,y,z中含有1-9中的所有数字,打印
printf("%d\t%d\t%d\n",x,y,z);
for(i=1;i<10;i++) //遍历数组,将数组中的所有元素清零
a[i]=0;
}
return 0;
}