2010-11-01 124 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)空间。