遞迴 N個不相同的元素,輸出所有可能的排列

2021-07-09 09:58:46 字數 627 閱讀 2823

前乙個日誌解決了1-n個數字的排列。假如是n個不同元素的排列,就要用到2個陣列,不能簡單再用變數i來模擬了。

但是,解決問題的思路是一樣的,還是在每個位置上遍歷所有可能,判斷能否放置該元素,然後向後移動,直到結尾。

//判斷b[pos]的元素在a中是否已經出現過

int can_place_1(int *a, int *b, int j, int pos)

;file * fp = fopen("./permutation_out.txt", "w+");

if(null!=fp)

fclose(fp);

}最後輸出檔案的內容為:

permutation:

a    b    c    d    

permutation:

a    b    d    c    

permutation:

a    c    b    d    

permutation:

a    c    d    b    

permutation:

a    d    b    c    

permutation:

a    d    c    b

符合預期的結果,完成。

尋找陣列中不相同元素的個數

題意 乙個整數陣列,計算該陣列中不相同整數的個數。如a 則輸出不相同的個數為7.方法一是使用hash陣列,將hash陣列裡面的數全部制為0 然後hash a i 為0時,將其設定為1 最後hash陣列的和就是不同數字的數目。此種方法的缺點就是只能適合整形陣列,其他陣列不適合 但是優點就是時間複雜度小...

生成k個小於n的互不相同的隨機數

核心 讓每個數被選中的概率都為k n.隨機取出乙個數,剩下的裡面再取出乙個數,重複k次。方法一 利用洗牌的原理,將n個數 0至n 1 按次序排好,讓最後乙個數和乙個隨機 0 n 1 挑選出的位子進行互換,再讓倒數第2個數和 0 n 2 位置中挑選出來的位置進行互換,依次執行k次,陣列中的最後k個數就...

zip函式中的幾個迭代器元素數目不相同會怎麼樣

它的功能可以看這個 在這裡需要注意一點,當通過for迴圈遍歷時,遍歷會在某一iter遍歷到頭後停止,也就是當其中乙個iter的元素數量小於另乙個,那麼元素多的iter的剩餘元素不會被遍歷。這個主要是我在看faster rcnn原始碼時看到的,覺得很不錯。其中的 如下 for iter in pred...