DFS 組合的輸出

2021-09-20 06:14:22 字數 706 閱讀 3134

題目描述:

排列與組合是常用的數學方法,其中組合就是從n個元素中抽出r個元素(不分順序且r < = n),我們可以簡單地將n個元素理解為自然數1,2,…,n,從中任取r個數。

現要求你不用遞迴的方法輸出所有組合。

例如n = 5 ,r = 3 ,所有組合為:

1 2 3

1 2 4

1 2 5

1 3 4

1 3 5

1 4 5

2 3 4

2 3 5

2 4 5

3 4 5

#include

#include

using

namespace std;

int n, r;

const

int maxn =30;

vector<

int> v;

bool vis[maxn]=;

void

dfs(

int step,

int num)

//step:當前是第幾個盒子,num:當前處理下標為num的數字

else

}return;}

for(

int i = num; i <= n; i++

)//下乙個放的數字肯定比之前的大}}

intmain()

DFS 組合的輸出

排列與組合是常用的數學方法,其中組合就是從n個元素中抽出r個元素 不分順序且r n 我們可以簡單地將n個元素理解為自然數1,2,n,從中任取r個數。現要求你用遞迴的方法輸出所有組合。例如n 5,r 3,所有組合為 1 2 3 1 2 4 1 2 5 1 3 4 1 3 5 1 4 5 2 3 4 2...

組合的輸出 dfs

排列與組合是常用的數學方法,其中組合就是從n個元素中抽出r個元素 不分順序且r n 我們可以簡單地將n個元素理解為自然數1,2,n,從中任取r個數。現要求你用遞迴的方法輸出所有組合。例如n 5,r 3,所有組合為 1 2 3 1 2 4 1 2 5 1 3 4 1 3 5 1 4 5 2 3 4 2...

組合的輸出(回溯 dfs)

排列與組合是常用的數學方法,其中組合就是從n個元素中抽出r個元素 不分順序且r n 我們可以簡單地將n個元素理解為自然數1,2,n,從中任取r個數。現要求你不用遞迴的方法輸出所有組合。例如n 5,r 3,所有組合為 l 2 3 l 2 4 1 2 5 l 3 4 l 3 5 1 4 5 2 3 4 ...