【數據結構與算法】關於排列組合

1、給出數字n,列出所有的排列組合的可能
【題目】:
這裏寫圖片描述
【解法】: 用遞歸的方式

這裏寫圖片描述


2、給出一個數組,列出所有可能的排列組合序列(不允許有重複)
【題目】:
這裏寫圖片描述
【解法】:
這裏寫圖片描述


3、給出數字n,k,返回所有排列組合序列中的第k個序列
【題目】:
這裏寫圖片描述
【解法】:
【我自己的:出現了超時的錯誤】用了最簡單的遞歸,超時了。實際上就是題目1的做法,只不過算到第k個就停止。
這裏寫圖片描述
【參考另一種解法】
不使用遞歸,而是看k與排列組合序列的關係,總結規律,其實我一開始也希望這麼做,但是總覺得要計算n的階乘,然後就放棄了,但其實,對於這道題來說,n最大是9,所以可以一開始先把階乘都算出來,存到數組裏面,方便後面的調用。這裏還有一個巧妙的地方,就是,提前把數字存到數組裏面,用一個刪除一個,這樣方便找剩下數字裏面的第n個數字。具體的代碼爲:

這裏寫圖片描述
4、給出下一個全排列
【題目】
這裏寫圖片描述
【解法】
這裏寫圖片描述

發佈了75 篇原創文章 · 獲贊 26 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章