Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <algorithm>
- #include <cstring>
- #include <string>
- #include <cctype>
- #include <stack>
- #include <queue>
- #include <list>
- #include <vector>
- #include <map>
- #include <set>
- #include <sstream>
- #include <stdlib.h>
- #include <cmath>
- #define LL unsigned long long
- using namespace std;
- int N,n;
- char M[100][100];char m[100][100];
- char m1[100][100];char m2[100][100];char m3[100][100];
- void rotar_90(){
- for(int l=n-1,i=0;l>=0 && i<n;l--,i++){
- for(int k=0,j=0;k<n && j<n;k++,j++){
- m1[k][l]=m[i][j];
- }
- }
- }
- void rotar_180(){
- for(int l=n-1,i=0;l>=0 && i<n;l--,i++){
- for(int k=0,j=0;k<n && j<n;k++,j++){
- m2[k][l]=m1[i][j];
- }
- }
- }
- void rotar_270(){
- for(int l=n-1,i=0;l>=0 && i<n;l--,i++){
- for(int k=0,j=0;k<n && j<n;k++,j++){
- m3[k][l]=m2[i][j];
- }
- }
- }
- int main() {
- while(scanf("%d %d",&N,&n)){
- if(N==0 && n==0) break;
- getchar();
- for (int i=0;i<N;i++){
- for(int j=0;j<N;j++){
- scanf("%c",&M[i][j]);
- }
- getchar();
- }
- for(int i=0;i<n;i++){
- for(int j=0;j<n;j++){
- scanf("%c",&m[i][j]);
- }
- getchar();
- }
- rotar_90();rotar_180();rotar_270();
- /*compruebo para cada 1*/
- int c1=0;int c2=0; int c3=0;int c4=0;
- for(int i=0;i<N;i++){
- for(int j=0;j<N;j++){
- if ( M [i] [j] == m [0] [0] ) {
- if ( i + n > N || j + n > N )
- continue;
- bool flag = true;
- for ( int k = 0; k < n; k++ ) {
- for ( int l = 0; l < n; l++ ) {
- if ( m [k] [l] != M [i + k] [j + l] ) {
- flag = false;
- k = l = n;
- }
- }
- }
- if ( flag )
- c1++;
- }
- }
- }
- for(int i=0;i<N;i++){
- for(int j=0;j<N;j++){
- if ( M[i][j] == m1[0][0] ) {
- if ( i + n > N || j + n > N )
- continue;
- bool flag = true;
- for ( int k = 0; k < n; k++ ) {
- for ( int l = 0; l < n; l++ ) {
- if ( m1 [k] [l] != M [i + k] [j + l] ) {
- flag = false;
- k = l = n;
- }
- }
- }
- if ( flag )
- c2++;
- }
- }
- }
- for(int i=0;i<N;i++){
- for(int j=0;j<N;j++){
- if ( M[i][j] == m2[0][0] ) {
- if ( i + n > N || j + n > N )
- continue;
- bool flag = true;
- for ( int k = 0; k < n; k++ ) {
- for ( int l = 0; l < n; l++ ) {
- if ( m2 [k] [l] != M [i + k] [j + l] ) {
- flag = false;
- k = l = n;
- }
- }
- }
- if ( flag )
- c3++;
- }
- }
- }
- for(int i=0;i<N;i++){
- for(int j=0;j<N;j++){
- if ( M[i][j] == m3[0][0] ) {
- if ( i + n > N || j + n > N )
- continue;
- bool flag = true;
- for ( int k = 0; k < n; k++ ) {
- for ( int l = 0; l < n; l++ ) {
- if ( m3 [k] [l] != M [i + k] [j + l] ) {
- flag = false;
- k = l = n;
- }
- }
- }
- if ( flag )
- c4++;
- }
- }
- }
- printf("%d %d %d %d\n",c1,c2,c3,c4);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement