對於給定的正整數n(n>=1),求1到n構成的集合的冪集(包括全集和空集)
思路將二進位制位與冪集對應起來,n的冪集個數為2
n2^n
2n,每乙個二進位制位代表乙個元素。下面以n等於3為例。
集合元素
對應的二進位制位
對應的十進位制數
000-
0011
0102
0113
1004
1015
1106
1117
演算法複雜度: o(n
∗2n)
o(n*2^n)
o(n∗2n
) 實現
#include
using namespace std;
/* alogorithm design
蠻力法
1.直接列舉法求解冪集問題
*/// 將b表示的二進位制加1
// b陣列下表從小到大對應從低到高位
intinc
(int b,
int n)}}
void
pset
(int a,
int b,
int n)
cout <<
"}";
inc(b,n);}
cout << endl;
}int
main()
pset
(a,b,n)
;return0;
}
思路
從最初的空集開始,往裡面加第乙個元素,將得到的子冪集與原來的冪集合並,就得到了新的子冪集,然後再重複以上操作。
演算法複雜度: o(2
n)
o(2^n)
o(2n)
實現
#include
using namespace std;
vectorint>
> pset;
// 全域性變數 存放冪集
void
psetsolve
(int n)
for(pit=tmp.
begin()
;pit!=tmp.
end(
);pit++)}
}// 列印冪集
void
disp
(int n)";
}}intmain()
蠻力法求解「獄吏問題」
問題描述 獄吏問題 某國王對囚犯進行大赦,讓一獄吏n次通過一排鎖著的n間牢房,每通過一次按所定規則轉動n間牢房中的某些門鎖,每轉動一次原來鎖著的被開啟,原來開啟的被 鎖上通過n次後,門鎖開著的,牢房中的犯人被放出,否則,犯人不得釋放。轉動門鎖的規則是這樣的,第一次通過牢房,從第一間開始轉動每一把鎖,...
蠻力法求解0 1揹包問題C
先佔坑 include include 以下三個庫用於計算程式運算時間 include include include using namespace std define n 100 struct goods int n,bestvalue,cv,cw,c 物品數量,價值最大,當前價值,當前重量,...
蠻力法 求解迷宮問題 DFS和BFS
問題描述 有如圖8 8的迷宮 o x ooooo xoxxooox xoxxoxxo xo xooooxoo xo 其中,o表示通路方塊,x表示障礙方塊。假設入口位置為 0,0 出口為右下角方塊位置 7,7 設計乙個程式求指定入口到出口的一條迷宮路徑。分析 用n表示迷宮大小,用二維陣列maze存放迷...