我必須比較M
項目,其中單個項目不應與自己比較。在這種情況下,我想設計一個算法來查找nth
比較。如果,例如,我比較2項則比較的名單應該是:找到第n個比較
2: (1,2)
同樣,如果我比較3項比較的名單應該是:
3: (1,2), (1,3), (2,3)
根據這一模式:
4: (1,2), (1,3), (1,4), (2,3), (2,4), (3,4)
5: (1,2), (1,3), (1,4), (1,5), (2,3), (2,4), (2,5), (3,4), (3,5), (4,5)
等等。
我的問題是,什麼是nth
項目(i,j)
如果輸入的是M
?
M: (1,2), ..., (i,j), ..., (M-1,M)
雖然我可以很容易地編寫一個簡單的程序來計算這個臨時,我想知道是否有一個封閉的形式解決這一所以它不會與M
規模。
編輯:爲了使這更明確的(並具有可用於測試中實現的示例),我想代碼是在C
與下面的模板:
void findIJ(int M, int n) {
int i = 0;
int j = 0;
/* Do work to find i and j*/
printf("(i,j) = (%i,%i)\n", i, j);
}
我會查看你的問題作爲第i個組合,你會發現第i個元素形成C(n,k)的組合列表,在你的情況下k將是2.有一個答案http:// stackoverflow .com/questions/127704/algorithm-to-return-all-combinations-of-k-elements-from-n另外一篇文章https://msdn.microsoft.com/en-us/library/aa289166.aspx – vincentluth