2011-02-16 5 views
0

Supposons que je possède un tableau 2DComment inverser une matrice NxN lue en diagonale?

J'ai reçu un tableau, 'entrée char [N] [N]' qui a été lu en diagonale par quelqu'un.

Mon but est de reproduire le tableau original CHAR input_original [N] [N] 'de la diagonale lire 'entrée char [N] [N]' tableau

Après avoir lu en diagonale, mon entrée est,

adb

CEG -------------------> matrice A

HFI

et maintenant je veux faire comme

abc

def -------------------> matrice B (tableau input_original)

ghi

où la matrice A est le sortie de lecture diagonale (un db ceg hf i -> fait cela comme une matrice) de la matrice B

Toutes les suggestions sont les bienvenues.

+0

demandez-vous le code ou l'algorithme? de toute façon, je pense qu'un exemple ne suffit pas .. – ardiyu07

+0

Que signifie «lire en diagonale» une matrice? –

+0

Logique de niveau d'algorithme aussi bien pour moi. –

Répondre

3

Je voudrais juste calculer le "chemin" à travers votre matrice si c'est en diagonale, par exemple.

1--2 3--4 5 
////| 
//// | 
6 7 8 9 10 
|//// 
|////
11 12 13 14 15 
////| 
//// | 
16 17 18 19 20 
|//// 
|//// 
21 22-23 24-25 

Ceci est, vous stockez les indices dans l'ordre que vous lisez. Une fois que vous avez fait cela, il vous suffit de remplir votre matrice en fonction de ces indices.

Donc, le plus difficile dans ce cas est de savoir comment calculer le chemin. Vous pouvez le faire comme suit: Tout d'abord, nous reconnaissons que le chemin conists exclusivement de quatre directions:

  • droit (R)
  • jusqu'à (UR)
  • vers le bas (D)
  • vers le bas à gauche (DL)

de plus, nous reconnaissons que seuls quelques ordres de directions sont autorisés:

  • R-DL
  • DL-DL
  • DL-D
  • DL-R
  • D-UR
  • UR-UR
  • UR-R

Grâce à cette connaissance il n'y a pas de problème pour calculer le chemin: il suffit de stocker la dernière direction et la position actuelle.Ensuite, nous devons calculer la prochaine direction de la façon suivante: nous essayons UR, et si cela est impossible, nous marchons R.

  • si la dernière direction

    • si la dernière direction était UR, était DL, nous essayons DL, et si ce n'est pas possible, nous marchons D, si cela n'est pas possible, nous marchons R.

    J'espère que je n'ai rien gâché, mais je pense que c'est une façon pratique de faire il.

  • Questions connexes