2017-09-10 1 views
0

Einschränkungen:Gibt es eine Möglichkeit, eine summierte-are-Tabelle einer Matrix mit nur einer Iteration zu erstellen?

Sie können die Matrix nicht mehr als einmal durchlaufen.

Wenn wir die Matrix A benennen, dann gibt es zwei dieser Matrizen, eine ist 'read-only' und die andere ist 'read/write'. Wir werden die "Lese/Schreib" -Matrix verwenden, um die summierte Flächentabelle zu konstruieren.

Zum Beispiel dieser Code hier:

http://www.geeksforgeeks.org/submatrix-sum-queries/

Iterares 2mal: 1) das Summieren aller Spalten 2) Summieren aller Zeilen

+0

Odd Frage, der normale Algorithmus macht bereits nur einen Durchlauf. – harold

+0

Kannst du 'diesen' normalen Algorithmus beschreiben? – HashWizard

Antwort

0

brauchbares Bild für summierten Bereich Tabellen aus Wikipedia:

SAT

Während des Baus haben wir bereits hav e A, B und C (für die Kanten wären sie Null), und wollen berechnen. Der Bereich, der durch dieses Rechteck aufgespannt wird, ist in diesem Fall 1x1, daher wissen wir, dass die Summe des Rechtecks ​​X ist, wobei X die Nummer der ursprünglichen Matrix an der Position ist, also D = C + B - A + X. A wird subtrahiert, da die Bereiche C und B beide den Bereich A enthalten.

Einfach über die Matrix zu iterieren und jede Zelle mit dieser Formel zu füllen, iteriert nur einmal über die Matrix und könnte sogar direkt durchgeführt werden (Ersetzen der ursprünglichen Matrix durch ihre SAT), wenn Ihre Matrix nicht schreibgeschützt ist.

+0

Warum subtrahieren wir D - B - C von A, wenn wir die Summe von allem brauchen (aka D + B + C + A) auch was meinst du, wenn du SAT sagst? – HashWizard

+0

@HashWizard die Linie mit SUM ist, wie die Summe des roten Rechtecks ​​berechnet würde, wenn wir bereits die SAT haben (also D ist die Summe der gesamten Fläche über und links von D), aber in diesem Fall ist das tatsächlich die bekannte Größe (das Rechteck ist 1x1, also ist der Bereich nur eine Zelle und D existiert noch nicht, da wir es berechnen). SAT ist eine Abkürzung für den Sommerbereich. – harold

Verwandte Themen