国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

LintCode 15 全排列

2019-11-08 03:15:41
字體:
來源:轉載
供稿:網友

題目:permute


要求:

給定一個數字列表,返回其所有可能的排列。 注意事項你可以假設沒有重復數字。

樣例:

給出一個列表[1,2,3],其全排列為:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]

算法要求:

使用遞歸和非遞歸分別解決。

解題思路:

只寫出來遞歸的方法,思路就是m位與其他位依次交換,直到m等于總個數的時候(這個時候就是無法交換了)存入到vector容器里。m是從0~總個數的,而且m只跟m后面的進行交換,這樣就不會出現重復交換了。注意當函數到了遞歸出口的時候,簡單來說就是我存進去一個,就將它還原成上一個。非遞歸的方法想出來就會再來補充。

算法如下:

vector<vector<int> > mainVec; void permute(vector<int> &nums, int m) { int temp; if (m == nums.size()) { mainVec.push_back(nums); } else { for (int i = m; i < nums.size(); i++) { temp = nums[m]; nums[m] = nums[i]; nums[i] = temp; permute(nums, m+1); temp = nums[m]; nums[m] = nums[i]; nums[i] = temp; } } } vector<vector<int> > permute(vector<int> nums) { mainVec.clear(); permute(nums, 0); return mainVec; }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蓬莱市| 红安县| 天镇县| 沈丘县| 贺州市| 堆龙德庆县| 扬州市| 神木县| 军事| 汝州市| 屏南县| 遂昌县| 时尚| 通州区| 镇安县| 沁水县| 凤山市| 炉霍县| 宜君县| 鸡泽县| 光泽县| 云浮市| 出国| 绥芬河市| 故城县| 突泉县| 南京市| 阿尔山市| 固镇县| 淄博市| 屯昌县| 长春市| 莎车县| 唐山市| 兴安县| 达日县| 正镶白旗| 津市市| 日土县| 凯里市| 张掖市|