1.
漢諾塔#include
using namespace std;
void fac(int n, char a, char b, char c)
} int main()
2.普通揹包問題
設有乙個揹包可以放入的物品重量為s,現有n件物品,重量
分別是w1
,w2,w3
,…wn
。問能否從這
n件物品中選擇若干件
放入揹包中,使得放入的重量之和正好為
s。如果有滿足條件的
選擇,則此揹包有解,否則此揹包問題無解。
#include
using namespace std;
int knap(int s,int n,int w)
return knap(s,n-1,w); }
int main() ;
s=20;
n=5;
int x=knap(s,n,w);
if(x==1)
cout<<"問題有解"<
else
cout<<"問題無解"<
return 0; }
3. 0-1揹包
#include
using namespace std;
int timeval[110];
int val[110];
int maxval(int n, int s)
int main()
演算法基礎 遞迴演算法
遞迴演算法是將重複問題分解為同類的子問題而解決問題的方法,其核心思想是分治策略。簡單來說就是自己呼叫自己。直到達到退出遞迴的條件,則完成遞迴。1 找整個遞迴的終止條件 遞迴應該在什麼時候結束?3 本級遞迴應該做什麼 在這一級遞迴中,應該完成什麼任務?優點 遞迴的核心思想就是將乙個大問題,拆解成乙個小...
基礎演算法 遞迴
遞迴用處很廣,可以將複雜問題簡單化。很多問題都可以使用遞迴演算法或結合遞迴演算法得到解決。那麼,設計遞迴演算法的關鍵是什麼?其關鍵之處在於,正確分析出2種型別的節點 出口節點和入口節點 一 演算法關鍵 出口節點 入口節點 遞迴問題可看做是由各個節點構成,而所有節點只能分為出口節點 入口節點兩類。1 ...
演算法基礎 遞迴
乙個函式呼叫其自身,就是遞迴 遞迴和普通函式呼叫一樣是通過棧實現的 替代多重迴圈 解決本來就是用遞迴形式定義的問題 將問題分解為規模更小的子問題進行求解 例題 n皇后問題 n皇后問題 輸入整數n,要求n個西洋棋的皇后,擺在n n的棋盤上,互相不能攻擊,輸出全部方案。輸入乙個正整數n,則程式輸出n皇后...