昨天筆試又碰到全排列,不幸的是居然寫錯了。。。
回來後又仔細把當時的思路完善了一下,c++**如下
#include "stdafx.h"
#include
using namespace std;
#define maxsize 5
void swap(int *a,int *b)
void quanpailie(int *a,int n)
for(int i=0;iif(i!=0)//i=0單獨處理,不做交換,少呼叫函式,節省資源
swap(a,a+i);
quanpailie(a+1,n-1);
swap(a,a+i);
else
quanpailie(a+1,n-1);
}
}void main()
;quanpailie(a,maxsize);
system("pause");
}
46 全排列 全排列 遞迴
遞迴的時候每次確定乙個位置的數字 nums陣列在遞迴過程中分為左右兩部分,左邊部分是已經確定好的部分,而右邊是待確定數字的部分。每次都嘗試用當前位置右邊的數字來交換當前數字以確定當前數字。題目可以使用collections來優化。詳見 class solution 遞迴過程中每次確定乙個位置的數,遞...
全排列問題pascal解題程式
var a,b array 0.9 of longint n longint procedure print vari longint begin for i 1 to n do write a i 5 要保留五個常寬 writeln end procedure search dep longint...
46 全排列 47 全排列II
46.全排列 這題和之前做的劍指offer上的字串全排列。一樣。分析 1 如果原始要排列的陣列順序為1 2 3 4,現在只要分別交換1 2,1 3,1 4然後對剩下的3個元素進行遞迴的排列。自己的code 100 class solution if start nums.size 1 return ...