Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- char big[10000][10000];
- char small[10000][10000];
- char smallaux[10000][10000];
- int iguales(int nbig,int nsmall,int i1,int j1){
- for(int i=i1,k=0;i<(i1+nsmall),k<nsmall;i++,k++)
- for(int j=j1,l=0;j<(j1+nsmall),l<nsmall;j++,l++)
- if (big[i][j]!=small[k][l])
- return 0;
- return 1;
- }
- void rotate(int nsmall){
- for(int i=0,j=(nsmall-1);i<nsmall,j>=0;i++,j--)
- for(int k=0;k<nsmall;k++)
- smallaux[k][j]=small[i][k];
- for(int i=0;i<nsmall;i++)
- for(int j=0;j<nsmall;j++)
- small[i][j]=smallaux[i][j];
- }
- int main() {
- int nbig,nsmall;
- while(cin>>nbig>>nsmall, nbig || nsmall){
- for(int i=0;i<nbig;i++)
- for(int j=0;j<nbig;j++)
- cin>>big[i][j];
- for(int i=0;i<nsmall;i++)
- for(int j=0;j<nsmall;j++)
- cin>>small[i][j];
- int appear[4];
- for(int k=0;k<4;k++){
- appear[k]=0;
- for(int i=0;i<(nbig-nsmall+1);i++)
- for(int j=0;j<(nbig-nsmall+1);j++)
- if(iguales(nbig,nsmall,i,j))
- appear[k]++;
- rotate(nsmall);
- }
- cout<<appear[0]<<' '<<appear[1]<<' '<<appear[2]<<' '<<appear[3]<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment