程式設計演算法之列舉法

2021-06-30 16:51:51 字數 611 閱讀 7352

列舉法是程式設計裡常用的演算法之一,依賴於計算機的強大計算能力來窮盡沒一種可能的情況,從而達到解決問題的目的,改演算法效率並不高,但適用於一些沒有明顯規律可循的環境。

在小學奧數中經常會看到一些填數字的遊戲,如下圖

演算法描述題

*                  算

題題題題題題

從上圖可看出,共有5個漢字(算,法,描,述,題),每個漢字代表0-9中的乙個數,接著就用數字代表漢字,驗證計算的結果是否和列出的算式相等,若相等 則找出乙個正確的答案;

分析:此問題完全符合列舉演算法的要求,因為數字沒有規律可循0-9任何乙個數字都行。

// 演算法之列舉法.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

int _tmain(int argc, _tchar* argv)}}

}} }

return 0;

}

算,法,描,述,題 分別代表的是i1,i2,i3,i4,i5;

multi = 演算法描述題

result = 題題題題題題

注意題是i5,i5是不能等於0,以後初始化遍歷是1.

是不是很簡答呢?

演算法 列舉法

列舉 enumuerate 是蠻力策略的一種表現,最普遍的思維方式。它根據問題中的條件將可能的情況一一枚舉出來,逐一嘗試從中找到滿足問題條件的解。優點 演算法簡單,在區域性地方使用列舉法,效果十分的好 缺點 運算量過大,當問題的規模變大的時候,迴圈的階數越大,執行速度越慢 示例 百錢百雞問題 我國古...

程式設計演算法之試探法

試探法也稱為回溯法,它是一種系統的搜尋問題解的方法,該演算法設計思想適用範圍相當廣發,例如 棋手思考下一步走 就是採用試探法。常見的彩票組合號碼都是由一些數字組成的,生產彩票號碼其實就是將所有數字進行不同的組合。程式設計演算法之試探法.cpp 定義控制台應用程式的入口點。include stdafx...

程式設計演算法之常數變異法

對於乙個複雜的問題,我們總是無法下手解決,但是,我們可以用乙個簡單的方式來解決。比如,我們要列印出金字塔,那麼,我們一時無法下手,但仔細一想,可以用最基本的sysout把空格和實心圖形輸出出來,這樣,我們就得到了乙個金字塔。可是,這不是程式設計,是機械的輸出。那麼,怎麼處理呢,我們可以從最下邊一層開...