基本概念
穷举法(穷举搜索法、枚举法, Brute Force)是一种在有限的解空间(解空间至少在理论上是有限的)内按照一定的策略进行查找的思想。穷举法的基本思想就是以下两个步骤:
- 确定问题的解(状态)的定义,解空间的范围以及正确解的判定条件。
- 根据解空间的特点选择搜索策略,一一检验解空间中的候选解是否正确,必要时可辅助一些剪枝法,排除一些明显不可能是正确解的检验过程,提高穷举的效率。
示例演示
我们以古堡算式为例。福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:ABCDE * ? = EDCBA。他对华生说:“ABCDE 应该代表不同的数字,问号也代表某个数字!”
华生:“我猜也是!”于是,两人沉默了好久,还是没有算出合适的结果来。请你利用计算机的优势,找到破解的答案。把 ABCDE 所代表的数字写出来。
#include <iostream>
int main()
{
int a, b, c, d, e, x;
for (a = 0; a <= 9; a++)
for (b = 0; b <= 9; b++)
for (c = 0; c <= 9; c++)
for (d = 0; d <= 9; d++)
for (e = 0; e <= 9; e++)
for (x = 0; x <= 9; x++)
if (a != b&&a != c&&a != d&&a != e&&b != c&&b != d&&b != e&&c != d&&c != e&&d != e)
if ((a * 10000 + b * 1000 + c * 100 + d * 10 + e)*x == e * 10000 + d * 1000 + c * 100 + b * 10 + a)
std::cout << a << " " << b << " " << c << " " << d << " " << e << " ";
system("pause");
return 0;
}