P1157 組合的輸出 暴力列舉 dfs

2022-09-12 03:24:10 字數 876 閱讀 2479

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

現要求你輸出所有組合。

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

123,124,125,134,135,145,234,235,245,345

一行兩個自然數n,r(1所有的組合,每乙個組合佔一行且其中的元素按由小到大的順序排列,每個元素佔三個字元的位置,所有的組合也按字典順序。

**注意哦!輸出時,每個數字需要3個場寬,pascal可以這樣:

write(ans:3);

輸入

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

這道題給我們的資料量並不大,我們可以採用dfs方式暴力列舉所有種組合。

這裡當cnt==r時就表示已經到達了最後一層,這時輸出我們的組合即可。

#include#includeusing namespace std;

int n, r;

void dfs(int cnt,int s,int tmp)

printf("\n");

} else }

}int main()

; dfs(0, 1, tmp);

return 0;

}

P1157 組合的輸出

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

洛谷P1157 組合的輸出 DFS暴力

題目鏈結 這個題目和全排列有一些不一樣 該題需要先從1 n中選擇m個數字,然後再對m個數字公升序排列。前半句,從n個數字選m個,普通的全排列可以做到,對m個數字公升序排列,那麼就在每一次選擇數字的時候從上次最後乙個出發就可以。主要也是我審題不清晰。include include include in...

洛谷P1157 組合的輸出

題目描述 排列與組合是常用的數學方法,其中組合就是從 nn 個元素中抽出 rr 個元素 不分順序且 r le n r n 我們可以簡單地將 nn 個元素理解為自然數 1,2,n1,2,n 從中任取 rr 個數。例如 n 5,r 3n 5,r 3 所有組合為 12 3 1 2 4 1 2 5 1 3 ...