蛮力法
蠻力法
- 蠻力法概述
- 蠻力法的基本應用
- 直接采用蠻力法的一般格式
- 例1
- 例2
蠻力法概述
蠻力法是一種簡單直接地解決問題的方法,通常直接基于問題的描述和所涉及的概念定義,找出所有可能的解。然后選擇其中的一種或多種解,若該解不可行則試探下一種可能的解。
使用蠻力法通常有如下幾種情況:
搜索所有的解空間:問題的解存在于規模不大的解空間中。
搜索所有的路徑:這類問題中不同的路徑對應不同的解。
直接計算:按照基于問題的描述和所涉及的概念定義,直接進行計算。往往是一些簡單的題,不需要算法技巧的。
模擬和仿真:按照求解問題的要求直接模擬或仿真即可。
蠻力法的基本應用
直接采用蠻力法的一般格式
在直接采用蠻力法設計算法中,主要是使用循環語句和選擇語句,循環語句用于窮舉所有可能的情況,而選擇語句判定當前的條件是否為所求的解。
例1
編寫一個程序,輸出2~1000之間的所有完全數。所謂完全數,是指這樣的數,該數的各因子(除該數本身外)之和正好等于該數本身,例如:
6=1+2+3
28=1+2+4+7+14
先考慮對于一個整數m,如何判斷它是否為完全數。
從數學知識可知:一個數m的除該數本身外的所有因子都在1~m/2之間。算法中要取得因子之和,只要在1~m/2之間找到所有整除m的數,將其累加起來即可。如果累加和與m本身相等,則表示m是一個完全數,可以將m輸出。
例2
在象棋算式里,不同的棋子代表不同的數,有以下算式,設計一個算法求這些棋子各代表哪些數字。
采用蠻力法時,設兵、炮、馬、卒和車的取值分別為a、b、c、d、e。則有:
a、b、c、d、e的取值范圍為0~9且均不相等
該表達式不成立
設:
m=a×1000+b×100+c×10+d
n=a×1000+b×100+e×10+d
s=e×10000+d×1000+c×100+a×10+d
則有:m+n==s
總結
- 上一篇: ethereumjs/ethereumj
- 下一篇: Python 简介及开发环境搭建