1.算法设计方法之穷举法

基本概念

        穷举法(穷举搜索法、枚举法, Brute Force)是一种在有限的解空间(解空间至少在理论上是有限的)内按照一定的策略进行查找的思想。穷举法的基本思想就是以下两个步骤:

  1. 确定问题的解(状态)的定义,解空间的范围以及正确解的判定条件。
  2. 根据解空间的特点选择搜索策略,一一检验解空间中的候选解是否正确,必要时可辅助一些剪枝法,排除一些明显不可能是正确解的检验过程,提高穷举的效率。

示例演示

        我们以古堡算式为例。福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:ABCDE * ? = EDCBA。他对华生说:“ABCDE 应该代表不同的数字,问号也代表某个数字!”
华生:“我猜也是!”于是,两人沉默了好久,还是没有算出合适的结果来。请你利用计算机的优势,找到破解的答案。把 ABCDE 所代表的数字写出来。

#include 

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;

}

运行结果

1.算法设计方法之穷举法_第1张图片

你可能感兴趣的:(算法之美,算法导论,穷举法,枚举法,Bruteforce,暴力算法)