子集生成的兩種方法

2021-07-02 03:45:08 字數 1011 閱讀 4987

該演算法來自--劉汝佳的演算法競賽入門經典。書中介紹了兩種演算法的核心**,但卻沒有逐過程詳細解說,另初學者看文字時很難看懂,

遇到問題,是先要直接研究問題的細節呢還是先把問題搞清楚?我認為絕對應該先學習如何去解決問題,構造方法的框架,而不是先去研究細節。

//方法一:

//思路:一次選出乙個元素放到集合中

[cpp]view plain

copy

#include 

using

namespace std;  

int a[20];  

/*遞迴輸出n以內所有的子集,其中cur為當前下標,初始值0*/

void print_subset(int n,int* a,int cur)  

}  int main()  

}  

//方法二:

//思路:構造乙個位向量b,而不是直接構造子集a本身

[cpp]view plain

copy

#include 

using

namespace std;  

bool b[20]=;//判斷當前每乙個節點擊中狀態

/*遞迴輸出n以內所有的子集,其中b表示該節點是否選中,cur為當前下標,初始值0*/

void print_subset(int n,bool* b,int cur)  

cout

}  b[cur]=true;//該節點設為選中狀態

print_subset(n,b,cur+1);//cur+1遞迴該狀態時的下一層節點,迴圈該操作

b[cur]=false;//該節點設為不選中狀態

print_subset(n,b,cur+1);//cur+1遞迴該狀態時的下一層節點,迴圈該操作

}  int main()  

子集生成的兩種方法

該演算法來自 劉汝佳的演算法競賽入門經典。書中介紹了兩種演算法的核心 但卻沒有逐過程詳細解說,另初學者看文字時很難看懂,遇到問題,是先要直接研究問題的細節呢還是先把問題搞清楚?我認為絕對應該先學習如何去解決問題,構造方法的框架,而不是先去研究細節。方法一 思路 一次選出乙個元素放到集合中 cpp v...

PHP生成靜態頁的兩種方法

兩種方法簡單說明如下 1 使用檔案函式得到靜態頁面的模板字串,然後用str replace函式將需要替換的東西替換了再寫入到新的檔案中。2 利用php的輸出控制函式 output control 得到靜態頁面字串,再寫入到新的檔案中。下面開始詳細的說明。一 利用模板生成 什麼是模板?如果大家使用過d...

生成訂單號的兩種方法

php生成唯一訂單號 第二種是 1,生成a類,b類兩個表,create table order id a id int 10 unsigned zerofill not null auto increment,stub char 1 not null default primary key id e...