穷举法的一个实例
/*用1,2,3,...,9组成三个三位数abc,def和ghi,每个数字恰好出现一次,要求abc:def:ghi=1:2:3。按照"abc def ghi”的格式输出所有解,
每行一个解*/
#include <stdio.h>
void main(void) {
int i,j,k,d[10]; /*数组d用来存储0-9每个数字的出现次数,为了简化程序对0的出现次数依然进行统计*/
for (i=123;i<=329;i++) { /*循环变量i穷举abc的合法取值*/
k=1;
for (j=0;j<=9;j++) d[j]=0; /*每次穷举验证前先初始化数组d*/
while (k<=3) /*k取值范围1-3,依次求出k*i的各位数字出现次数*/
{
d[i*k%10]++;
d[i*k/10%10]++;
d[i*k/100]++;
k++;
}
for (j=1;j<=9;j++) if (d[j]!=1) break; /*验证1-9每个数字是否都只出现一次*/
if (j==10) printf("%6d%6d%6d\n",i,i*2,i*3);
}
}