めがね / paizaOnlineHackathon7
#include <iostream> using namespace std; int q[100][100], p[10][10]; bool Check(int m, int y, int x) { bool flg = true; for (int i=0; i<m; ++i) for (int j=0; j<m; ++j) { if (i==0 && j==0) continue; if (q[y+i][x+j] != p[i][j]) { flg = false; break; } } return flg; } void Solve(int n) { int m; for (int i=0; i<n; ++i) for (int j=0; j<n; ++j) cin >> q[i][j]; cin >> m; for (int i=0; i<m; ++i) for (int j=0; j<m; ++j) cin >> p[i][j]; for (int i=0; i<=n-m; ++i) for (int j=0; j<=n-m; ++j) if (q[i][j] == p[0][0]) if ( Check(m,i,j) ) cout << i << " " << j << endl; } int main(void) { int n; cin >> n; Solve(n); return 0; }
パターンの左上が一致していた場合、全て合致しているか一から調べていく。
合致している場合は、その座標を出力。
〜了〜