以下案例选自
《第一行代码 C语言》 人民邮电出版社 主编:翁惠玉
对部分案例添加了自己的代码。
通用算法设计
1.枚举法:
- 对可能的结果值按某种一定顺序一个一个的枚举检验
- 适合解的数量有限,可枚举的场合,特点是直观,但时间性能差,注意优化,提高效率。
一、ABCD x E =DCBA(A,B,C,D代表不同的数字)
分析:
1)A和D不能位0
2)因为A,B,C,D代表不同的数字,E不能位1
方案一:
#include <stdio.h>
int main()
{
int A,B,C,D,E,num1,num2;
for(A = 2;A <= 9; ++A){
//printf(" A=%d \n",A);
for(B = 0;B <= 1;++B){
if(A == B) continue;
//printf(" B=%d \n",B);
for(C = 6;C <= 7;++C){
if(C==A||C == B ) continue;
//printf(" C=%d \n",C);
for(D = 1;D <= 9;++D){
if( D == A|| D == B || D == C) continue;
//printf(" D=%d \n",D);
for(E = 2;E <= 9;++E){
if(E == A || E == B||E == C||E == D ) continue;
//printf(" E=%d \t",E);
num1 = A*1000+B*100+C*10+D;
num2 = D*1000+C*100+B*10+A;
if(num1 * E == num2)
printf(" %d * %d =%d\n",num1,E,num2);
}
}
}
}
}
return 0;
}
方案二(改进版):