我正在處理每個元素與原始位置不同的排列。我想要一個給定{輸入長度,行和數字}的算法,會給我輸出編號。下面是一個例子:找到沒有元素保留位置的排列
如果輸入長度爲4,則0123所有的排列是:
0123,0132,0213,0231,0312,0321,
1023,1032,1203,1230,1302,1320,
2013,2031,2103,2130,2301,2310,
3012,3021,3102,3120,3201,3210
在其中沒有數字是在同一個地方的置換(每個數字已經移動):
1032,1230,1302,
2031,2301,2310,
3012,3201,3210
編號從0開始,所以如果函數的輸入是{4,0,0},則輸出應該是第0個(第一)置換的第0個(最左邊的)數位。 1032第一個數字爲1。
如果輸入是{4,1,1},那麼輸出是1230第二個數字,這是2
行號可能是的數量相等更大排列。在這種情況下,以餘數爲模數排列(在上述情況下,行模9)。
在c語言中會很棒。
(這不是家庭作業,它是爲了工作,如果你必須知道,杜鵑哈希值我想隨機選擇我在每個階段做的交換,看它是否比BFS更好,當表的數量。大於二)在Python
這個問題真的沒有一個有意義的答案,除非你在排列上定義了部分順序。誰說0123必須在0213之前? – 2009-06-21 16:31:24
好評泰勒。我命令排列從最小到最大,但我不關心行的順序,只要輸出只有輸入的功能,並且每行都可能相同。 – Eyal 2009-06-21 16:36:34