2010-11-01 5 views
1

Dans une matrice mxn comportant k objets, quel est le nombre de façons dont un objet est placé dans une cellule de matrice (k < = n, m). En donnant un exemple le mieux illustré, si le 1er objet parmi les objets "k" était placé à l'emplacement (1,1), alors l'objet suivant ne pouvait pas être placé sur la 1ère colonne ou sur la 1ère rangée, et sur pour le reste des objets restants.Problème de matrice dans C

La sortie du problème sera comme: (kth objet, nième ligne, mth column) ie, (3,3,4) ou de manière informelle, "De combien de façons k objets peuvent être placés sur la matrice (nxm)

J'ai trouvé la règle de fonctionnement, disons: [n (n-1) (n-2) ... (n- (k-1))] [m (m-1) (m -2) ... (m- (k-1))] -> cela me donnera exactement le nombre de façons, k objets peuvent être placés dans la cellule, avec les contraintes appliquées

Mais je peux Ne pas créer la condition de "boucle imbriquée": pour (objet) pour (ligne) pour (colonne)

J'utilise C!

besoin d'aide pour la construction du code!

Répondre

1

Comme je l'ai dit here, tout mettre en œuvre 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]; 
} 

Comme d'habitude, vous pouvez optimiser ceci pour utiliser l'espace O (k).