欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

樹形結(jié)構(gòu)的3中搜索方式示例分享

 更新時間:2014年02月28日 10:13:49   作者:  
樹的3中常見搜索方式,包括二叉樹方式(每一層只有0和1)、滿m叉樹(每一層都有0 到m - 1)、子集樹,也稱為全排列樹,需要的朋友可以參考下

復(fù)制代碼 代碼如下:

/**
樹的3中常見搜索方式
1.二叉樹方式(每一層只有0和1)
2.滿m叉樹(每一層都有0 到m - 1)
3.子集樹,也稱為全排列樹
*/
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>

using namespace std;

const int M = 20;

int n, m;
int ans[M];
//二叉樹
void dfs_two(int cur){
 if(cur == n){
  for(int i = 0; i < n; i++){
   cout << ans[i] << " ";
  }
  cout << endl;
  return;
 }
 ans[cur] = 1;
 dfs_two(cur + 1);
 ans[cur] = 0;
 dfs_two(cur + 1);
}

//m叉樹
void dfs_m(int cur){
 if(cur == n){
  for(int i = 0; i < n; i++){
   cout << ans[i] << " ";
  }
  cout << endl;
  return ;
 }
 for(int i =0; i < n; i++){
  ans[cur] = i;
  dfs_m(cur + 1);
 }
}
bool vis[M];
//子集樹
void dfs_sub(int cur){
 if(cur == n){
  for(int i = 0; i < n; i++){
   cout << ans[i] << " ";
  }
  cout << endl;
  return;
 }
 for(int i = 0; i < n; i++){
  if(false == vis[i]){
   vis[i] = true;
   ans[cur] = i;
   dfs_sub(cur + 1);
   vis[i] = false;
  }
 }
}

int main(){

 n = 5;
 memset(ans, -1, sizeof(ans));
 memset(vis, false, sizeof(vis));
 dfs_two(0);//二叉樹搜索
 dfs_m(0);//滿m叉樹搜索
 dfs_sub(0);//子集樹搜索
 return 0;
}

相關(guān)文章

  • C++簡易版Tensor實現(xiàn)方法詳解

    C++簡易版Tensor實現(xiàn)方法詳解

    這篇文章主要介紹了C++簡易版Tensor的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值
    2022-08-08
  • Clion下vcpkg的使用詳解

    Clion下vcpkg的使用詳解

    這篇文章主要介紹了Clion下vcpkg的使用詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • C++?auto關(guān)鍵字的小知識點分享

    C++?auto關(guān)鍵字的小知識點分享

    這篇文章主要是來和大家介紹一些C++中的小知識點,本文將從auto關(guān)鍵字開始講起,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-05-05
  • C++成員函數(shù)中const的使用詳解

    C++成員函數(shù)中const的使用詳解

    這篇文章主要為大家詳細(xì)介紹了C++成員函數(shù)中const的使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 淺析C++字節(jié)對齊容易被忽略的兩個問題

    淺析C++字節(jié)對齊容易被忽略的兩個問題

    今天我就和大家分享一下C++字節(jié)對齊容易被忽略的兩個問題。以下問題也是我實際開發(fā)工作中遇到的,如果有不同意見歡迎交流
    2013-07-07
  • C++右值引用與移動構(gòu)造函數(shù)基礎(chǔ)與應(yīng)用詳解

    C++右值引用與移動構(gòu)造函數(shù)基礎(chǔ)與應(yīng)用詳解

    左值和右值都是針對表達(dá)式,左值是指表達(dá)式結(jié)束后依然存在的持久對象,右值是指表達(dá)式結(jié)束時就不再存在的臨時對象,下面這篇文章主要給大家介紹了關(guān)于C++11右值引用和移動語義的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • C++11中使用using的方法

    C++11中使用using的方法

    在 C++ 中 using 用于聲明命名空間,使用命名空間也可以防止命名沖突。這篇文章主要介紹了C++11中使用using的方法,需要的朋友可以參考下
    2021-09-09
  • c++遍歷lua table示例

    c++遍歷lua table示例

    這篇文章主要介紹了c++遍歷lua table示例,需要的朋友可以參考下
    2014-04-04
  • c/c++靜態(tài)庫之間相互調(diào)用的實戰(zhàn)案例

    c/c++靜態(tài)庫之間相互調(diào)用的實戰(zhàn)案例

    C++調(diào)用C的函數(shù)比較簡單,直接使用extern "C" {}告訴編譯器用C的規(guī)則去編譯C代碼就可以了,下面這篇文章主要給大家介紹了關(guān)于c/c++靜態(tài)庫之間相互調(diào)用的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • C語言實現(xiàn)3*3數(shù)組對角線之和示例

    C語言實現(xiàn)3*3數(shù)組對角線之和示例

    今天小編就為大家分享一篇C語言實現(xiàn)3*3數(shù)組對角線之和示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12

最新評論