2010-11-01 95 views
1

在具有k個對象的m×n矩陣中,對象放置在矩陣單元中的方式的數量是多少(k < = n,m)。通過給出一個例子可以更好地說明,如果「k」個對象中的第一個對象被放置在位置(1,1)處,則下一個對象不能放置在第一列或第一行上,剩下的其餘物體。 「(第k個對象,第n行,第m列),即(3,3,4) 或非正式地說,」k個對象可以放在(nxm)矩陣上的方式有多少(n-1)(n-2)...(n-(k-1))] [m(m-1)(m -2)...(m-(k-1))] - >這會給我確切的方法數量,k個對象可以放置在單元格中,具有施加的約束。C中的矩陣問題

但是我可以構建「嵌套for-loop」條件: for(object) for(row) for(column)

我使用C!

在構建代碼時需要一些幫助!

回答

1

正如我所說here,只是實現this

/* n,m,k are constants */ 
int rook() { 
    int i, j, mem[m+1][k+1]; 
    for (i=0; i<=m; i++) 
     mem[i][0] = 1; 
    for (j=1; j<=k; j++) 
     mem[0][j] = 0; 
    for (i=1; i<=m; i++) 
     for (j=1; j<=k; j++) 
      mem[i][j] = mem[i-1][j] + (n-j+1)*mem[i-1][j-1]; 
    return mem[m][k]; 
} 

像往常一樣,你可以優化這個使用O(k)空間。