2016-04-09 6 views

Antwort

1
  1. Die Matrix B mit einer Doppelschleife scannen. Begrenzen Sie die Suche auf das obere linke Rechteck, das durch den Unterschied der Größen definiert ist.

  2. Überprüfen Sie, ob die entsprechenden Bereiche mit einer anderen doppelten Schleife übereinstimmen. Wenn sie vollkommen übereinstimmen, sind Sie fertig. sonst weiter mit 1.

Pseudocode:

// Helper 
bool checkMatch(int by, int bx) { 
    for (int ay = 0; ay < ah; ay++) { 
    for (int ax = 0; ax < aw; ax++) { 
     if (a[ay][ax] != b[by + ay][bx + ax]) { 
     return false; 
     } 
    } 
    } 
    return false; 
} 

// Scan loop 
for (int by = 0; by < bh - ah; by++) { 
    for (int bx = 0; bx < bw - aw; bx++) { 
    if (checkMatch(by, bx)) { 
     println("Found: " + bx + " + by); 
     // stop here if one occurence is enough 
    } 
    } 
} 
Verwandte Themen