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.
Ü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
}
}
}
und was genau hält Sie hier? Sie wissen nicht, wie man eine doppelte Schleife schreibt? –