您的位置:首页 > 其它

hihocoder #1094 : Lost in the City

2016-08-26 20:25 441 查看
题目连接:http://hihocoder.com/problemset/problem/1094?sid=860836

此题是暴力枚举的方法:

1.首先在地图中找到他所在的中心位置,因为,无论他是否不知方向,中心位置是不会变的。

2.找到中心位置后,要进行对比,这里有四种情况。分别枚举即可

#include<iostream>
using namespace std;
int main(void)
{
int i, j, n, m;
char map[205][205], b[5][5];   //b为他的周围情况
cin>>n>>m;
for(i = 1; i <= n; i++)
for(j = 1; j <= m; j++)
cin>>map[i][j];      //放入map中
for(i = 1; i <= 3; i++)
for(j = 1; j <= 3; j++)
cin>>b[i][j];
for(i = 2; i < n; i++)
for(j = 2; j < m; j++)
if(map[i][j] == b[2][2])   //当满足中心相等时开始枚举
{
if(map[i - 1][j - 1] == b[1][1] && map[i - 1][j] == b[1][2] && map[i - 1][j + 1] == b[1][3] &&
map[i][j + 1] == b[2][3] && map[i + 1][j + 1] == b[3][3] && map[i + 1][j] == b[3][2] &&
map[i + 1][j - 1] == b[3][1] && map[i][j - 1] == b[2][1])
cout <<i<<" "<<j<<endl;
else if(map[i - 1][j + 1] == b[1][1] && map[i][j + 1] == b[1][2] && map[i + 1][j + 1] == b[1][3] &&
map[i + 1][j] == b[2][3] && map[i + 1][j - 1] == b[3][3] && map[i][j - 1] == b[3][2] &&
map[i - 1][j - 1] == b[3][1] && map[i - 1][j] == b[2][1])
cout <<i<<" "<<j<<endl;
else if(map[i + 1][j + 1] == b[1][1] && map[i + 1][j] == b[1][2] && map[i + 1][j - 1] == b[1][3] &&
map[i][j - 1] == b[2][3] && map[i - 1][j - 1] == b[3][3] && map[i - 1][j] == b[3][2] &&
map[i - 1][j + 1] == b[3][1] && map[i][j + 1] == b[2][1])
cout <<i<<" "<<j<<endl;
else if(map[i + 1][j - 1] == b[1][1] && map[i][j - 1] == b[1][2] && map[i - 1][j - 1] == b[1][3] &&
map[i - 1][j] == b[2][3] && map[i - 1][j + 1] == b[3][3] && map[i][j + 1] == b[3][2] &&
map[i + 1][j + 1] == b[3][1] && map[i + 1][j] == b[2][1])
cout<<i<<" "<<j<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  枚举