2017-12-20 4 views
0

eine n · n-Matrix als eine Zeichenfolge der Länge n * n dargestellt wird, wie Gegeben:Effizient in Räumen zwischen zwei Punkten einer Matrix füllt

strMatrix = "...... 
      ...... 
      ...... 
      ...... 
      ...... 
      ......" 

wo n = 7, was die effizienteste ist, Möglichkeit, die Leerzeichen zwischen zwei Indizes zu füllen? Zum Beispiel kann eine Funktion

fillSpaces(strMatrix, 0, 48) 

zurückkehren würde:

  "*..... 
      .*.... 
      ..*... 
      ...*.. 
      ....*. 
      .....*" 
+0

und Frage ist? –

+0

@BakhromRakhmonov Frage ist kursiv –

+0

Zeigen Sie uns, was Sie versucht haben, und ich gebe Ihnen einen Hinweis, wie dies zu tun ist. :) – IMCoins

Antwort

1

Von dem, was ich verstehe, kann dies in einer for-Schleife also O (n) Komplexität durchgeführt werden, wie Sie in den Diagonalen auf die füllen gehen.

Hier ist der Pseudo-Code für sie: -

for(int i=0; i<n; i++) { 
    mat[i][i] = '*'; 
} 

hoffe, das hilft!

+0

Danke für Ihre Antwort! Dies funktioniert nur auf Diagonalen mit einer Steigung von 1, oder? Was wäre, wenn ich fillSpaces (strMatrix, 0, 13) aufrufen müsste, wo die Diagonale stark geneigt ist? –

+0

@RushilJoshi in diesem Fall können Sie sehen, wie viele Diagonalen in diesen Intervallen wie in 0 bis 6 gibt es 1 Diagonale, 0 bis 13 gibt es 2 für n = 7 und dann markieren Sie nur die Diagonalen als *, Sie gerade wollen * irgendwo dazwischen rechts sein – zenwraight

Verwandte Themen