陣列中挑r個數字

2021-10-02 16:23:57 字數 810 閱讀 2275

問題 b: 【遞迴入門】組合的輸出

[命題人 : 外部匯入]

時間限制 : 1.000 sec  記憶體限制 : 128 mb

解決: 708

提交: 708統計

題目描述

排列與組合是常用的數學方法,其中組合就是從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 

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

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

遞迴方式為:(非遞迴不會啊啊啊)

#include using namespace std;

const int maxn=22;

int n,r;

int a[maxn];//當前排列;

void dfs(int num,int it)

printf("\n");

return;

}for(int i = num+1;i<=n;i++)

}int main()

return 0;

}

多個數字陣列 陣列問題集合

這個題集後面的內容都是dp,頭疼。1.輸入n個整數,輸出最小的k個 solution 1 先排序後輸出o nlogn 快速排序複雜度 solution 2 把陣列分為length k,length n k兩部分,通過比較大小來做 o n k solution 3 用堆來處理o n logk furt...

找出乙個陣列中各個數字出現的次數

看了prime第一章,突發奇想了乙個問題,如何寫乙個演算法去找出乙個陣列中各個數字出現的次數呢?方法一 可以使用我們經常寫的演算法,氣泡排序之類的,首先對陣列進行排序,然後根據prime中第一章的寫法。算出每個數字出現的次數。include include using namespace std i...

演算法 找出陣列中未出現的那個數字

今天看到一道演算法題。將1 100這100個數字放入int這樣的陣列中。現在要找出哪個數字是沒有出現在陣列中的。你會怎麼做?1 大部分人的做法 一瞬間就能想到的方法是遍歷 兩個迴圈套在一起,遍歷每乙個數字是否出現在陣列中。這個方法時間複雜度是o n 2 2 稍微思考一下,可以給出另乙個做法 先將陣列...