caioj1032 遞迴2(組合)

2021-08-07 11:07:38 字數 668 閱讀 8167

【閒話】弄懂全排列之後這題就很簡單了 emmm因為後面輸出的只會比前面的大所以不用不停穿衣服**服blabla(字典序 1 2 3與1 3 2是同乙個組合) 主要要弄懂i+r-k<=n即r-k<=n-i 然後老師說的剪枝比**上1到n迴圈會快很多 √

【題意】

組合就是從n個元素中抽出r個元素(不分順序且r < = n), 

我們可以簡單地將n個元素理解為自然數1,2,…,n,從中任取r個數。

【輸入格式】

一行兩個自然數n、r ( 1 < n < 21,1 < = r < = n )。

【輸出格式】 

所有的組合,每乙個組合佔一行且其中的元素按由小到大的順序排列,所有的組合也按字典順序。

【樣例輸入】

5 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

【**】

#includeusing namespace std;

int n,r,a[25];

void dfs(int k){

if(k==r+1)

{ for(int i=1;i<=r;i++)

i

1032 遞迴2(組合)

時間限制 1 sec 記憶體限制 128 mb 提交 923 解決 667 提交 狀態 討論版 題目描述 題意 組合就是從n個元素中抽出r個元素 不分順序且r n 我們可以簡單地將n個元素理解為自然數1,2,n,從中任取r個數。輸入格式 一行兩個自然數n r 1 n 21,1 r n 輸出格式 所有...

77 組合(遞迴)

1.問題描述 給定兩個整數 n 和 k,返回 1 n 中所有可能的 k 個數的組合。示例 輸入 n 4,k 2 輸出 2,4 3,4 2,3 1,2 1,3 1,4 2.思路分析 其實這道題目與78道題目沒有什麼本質上的區別,毋庸置疑還是使用遞迴求解,只是我們需要手動生成從1到n的有序陣列,然後在遞...

77 組合 中等)(1 5)(遞迴)

給定兩個整數 n 和 k,返回 1 n 中所有可能的 k 個數的組合。示例 輸入 n 4,k 2輸出 2,4 3,4 2,3 1,2 1,3 1,4 class solution def com self,result,res,n,k,w if len res k return for i in r...