hihoCoder#1094 Lost in the City
2024-09-08 06:20:26
限时10s,所以不用考虑什么算法了,暴力吧
分别按照3x3视野的四个方向去地图上匹配,把符合的地点标记出来,最后统一按照从上到下,从左到右的顺序输出。
代码:
#include <iostream> using namespace std; #define MAP_SIZE 250 bool match(char map[MAP_SIZE][MAP_SIZE], char sight[][], int r, int c) {
for (int i = ; i < ; i++)
for (int j = ; j < ; j++)
if (map[r + i][c + j] != sight[i][j])
return false;
return true;
} void find(char map[MAP_SIZE][MAP_SIZE], char sight[][], char res[MAP_SIZE][MAP_SIZE], int N, int M) {
for (int i = ; i < N - ; i++) {
for (int j = ; j < M - ; j++) {
if (match(map, sight, i, j))
res[i + ][j + ] = ;
}
}
} void rotate(char sight[][]) {
for (int i = ; i < ; i++)
for (int j = ; j < ; j++)
swap(sight[i][j], sight[ - j][ - i]);
for (int i = ; i < ; i++)
swap(sight[][i], sight[][i]);
} int main() {
int N, M;
char map[MAP_SIZE][MAP_SIZE];
char res[MAP_SIZE][MAP_SIZE];
char sight[][]; cin >> N >> M;
for (int i = ; i < N; i++)
for (int j = ; j < M; j++)
cin >> map[i][j]; for (int i = ; i < ; i++)
for (int j = ; j < ; j++)
cin >> sight[i][j]; memset(res, , MAP_SIZE * MAP_SIZE * sizeof(char)); for (int i = ; i < ; i++) {
find(map, sight, res, N, M);
rotate(sight);
} for (int i = ; i < N - ; i++)
for (int j = ; j < M - ; j++)
if (res[i][j])
cout << i + << " " << j + << endl; return ;
}
最新文章
- spark安装(实战)
- Haproxy日志配置
- C++智能指针简单剖析
- Sprint(第七天11.20)
- URL和搜索引擎优化
- 为什么使用 Redis及其产品定位 (转载自http://www.infoq.com/cn/articles/tq-why-choose-redis)
- jQuery需要掌握的技巧
- poj2749
- Java进阶篇(一)——接口、继承与多态
- Win2003及2008R2重启自动登录设置方法
- IDEA 导入 Tomcat9 源码
- PHP yii框架FormWidget组件
- P1637 三元上升子序列
- 20165220 2017-2018-2《Java程序设计》课程总结
- [蓝点zigBee] CC2530 实用教程总览
- [warn] _default_ VirtualHost overlap on port 443, the first has precedence
- 免费的 Vue.js 入门与进阶视频教程
- WORD文档中插入页码的问题
- VMware vSphere克隆虚拟机
- Android.mk简介