1.算法設計方法之窮舉法

基本概念

        窮舉法(窮舉搜索法、枚舉法, Brute Force)是一種在有限的解空間(解空間至少在理論上是有限的)內按照一定的策略進行查找的思想。窮舉法的基本思想就是以下兩個步驟:

  1. 確定問題的解(狀態)的定義,解空間的範圍以及正確解的判定條件。
  2. 根據解空間的特點選擇搜索策略,一一檢驗解空間中的候選解是否正確,必要時可輔助一些剪枝法,排除一些明顯不可能是正確解的檢驗過程,提高窮舉的效率。

示例演示

        我們以古堡算式爲例。福爾摩斯到某古堡探險,看到門上寫着一個奇怪的算式: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;

}

運行結果

在這裏插入圖片描述

發佈了262 篇原創文章 · 獲贊 168 · 訪問量 54萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章