0
我想按字典順序從給定的n位數字集合中產生下一個k排列。打印k下一個按字典順序排列的n位數字排列
初始數組和k給出。 像讓起始陣列是1 2 4 3 然後接下來的3個排列將是 1 3 2 4: 1 3 4 2: 1 4 3 2:
我試圖
static void permute(int arr[], int low, int high) {
if (low == high) {
printArray(arr);
return;
}
for (int i=low; i<high; i++) {
swap(arr, i, low);
permute(arr, low+1, high);
swap(arr, low, i);
}
}
static void swap(int arr[], int i, int j) {
int t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
但這不按照字典順序給出排列。而且我也無法限制下一個k個排列。
https://www.nayuki.io/page/next-lexicographical-permutation-algorithm – SirRaffleBuffle