题目是 小明迷路了,求出他的方位,具体的题目没了,所以没有弄过来,希望大家海涵或者提供一下
#include <iostream>
#include <utility>
#include <fstream>
using namespace std;
int N;
int M;
char ** allmap;
char ** side;
int const side_length = 3;
const pair<int,int> error = make_pair(-1,-1);
bool northcheckplace(int x,int y);
void getdata();
void findplace();
bool eastcheckplace(int x,int y);
bool sourthcheckplace(int x,int y);
bool westhcheckplace(int x,int y);
void readdata();
int main()
{
getdata();
//readdata();
findplace();
system("pause");
return 0;
}
void getdata()
{
cin>>N;
cin>>M;
allmap = new char*[N];
for(int i=0;i<N;i++)
{
allmap[i] = new char[M];
for(int j=0;j<M;j++)
{
cin>>allmap[i][j];
}
}
side = new char*[side_length];
for(int i=0;i<side_length;i++)
{
side[i] = new char[side_length];
for(int j=0;j<side_length;j++)
{
cin>>side[i][j];
}
}
}
void findplace()
{
pair<int,int> result;
result = error;
for(int i=0;i <= N-side_length;i++)
for(int j=0;j <= M-side_length;j++)
{
if( northcheckplace(i,j) == true )
cout<<i+2<<" "<<j+2<<endl;
else if( eastcheckplace(i,j) == true )
{
cout<<i+2<<" "<<j+2<<endl;
}
else if( sourthcheckplace(i,j) == true )
{
cout<<i+2<<" "<<j+2<<endl;
}
else if( westhcheckplace(i,j) == true )
{
cout<<i+2<<" "<<j+2<<endl;
}
}
}
bool northcheckplace(int x,int y)
{
for(int i=0;i<side_length;i++)
for(int j=0;j<side_length;j++)
{
if(allmap[x+i][y+j] != side[i][j])
return false;
}
return true;
}
bool eastcheckplace(int x,int y)
{
for(int i=0;i<side_length;i++)
for(int j=0;j<side_length;j++)
{
if(allmap[x+i][y+j] != side[side_length-j-1][i])
return false;
}
return true;
}
bool sourthcheckplace(int x,int y)
{
for(int i=0;i <side_length ;i++)
for(int j=0;j <side_length;j++)
{
if(allmap[x+i][y+j] != side[side_length-1-i][side_length-1-j])
return false;
}
return true;
}
bool westhcheckplace(int x,int y)
{
for(int i=0;i<side_length;i++)
for(int j=0;j<side_length;j++)
{
if(allmap[x+i][y+j] != side[j][side_length-1-i])
return false;
}
return true;
}
void readdata()
{
ifstream reader;
reader.open("data.txt");
reader>>N;
reader>>M;
allmap = new char*[N];
for(int i=0;i<N;i++)
{
allmap[i] = new char[M];
for(int j=0;j<M;j++)
{
reader>>allmap[i][j];
}
}
side = new char*[side_length];
for(int i=0;i<side_length;i++)
{
side[i] = new char[side_length];
for(int j=0;j<side_length;j++)
{
reader>>side[i][j];
}
}
reader.close();
}