时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

Little Hi gets lost in the city. He does not know where he is. He does not know which direction is north.

Fortunately, Little Hi has a map of the city. The map can be considered as a grid of N*M blocks. Each block is numbered by a pair of integers. The block at the north-west corner is (1, 1) and the one at the south-east corner is (N, M). Each block is represented by a character, describing the construction on that block: '.' for empty area, 'P' for parks, 'H' for houses, 'S' for streets, 'M' for malls, 'G' for government buildings, 'T' for trees and etc.

Given the blocks of 3*3 area that surrounding Little Hi(Little Hi is at the middle block of the 3*3 area), please find out the position of him. Note that Little Hi is disoriented, the upper side of the surrounding area may be actually north side, south side, east side or west side.

输入

Line 1: two integers, N and M(3 <= N, M <= 200).
Line 2~N+1: each line contains M characters, describing the city's map. The characters can only be 'A'-'Z' or '.'.
Line N+2~N+4: each line 3 characters, describing the area surrounding Little Hi.

输出

Line 1~K: each line contains 2 integers X and Y, indicating that block (X, Y) may be Little Hi's position. If there are multiple possible blocks, output them from north to south, west to east.

样例输入
8 8
...HSH..
...HSM..
...HST..
...HSPP.
PPGHSPPT
PPSSSSSS
..MMSHHH
..MMSH..
SSS
SHG
SH.
样例输出
5 4
package com.oj;

import java.util.Scanner;

public class TestValueOf {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String[] NM = in.nextLine().split(" ");
int n = Integer.parseInt(NM[0]);
int m = Integer.parseInt(NM[1]); String[] map = new String[n];
for(int i = 0;i < n; i++){
map[i] = in.nextLine();
} String[] posIn = new String[3];
for(int i = 0;i < 3; i++)
posIn[i] = in.nextLine(); StringBuilder sb = new StringBuilder();
sb.append(posIn[0]).append(posIn[1]).append(posIn[2]); for(int i = 1;i < m-1; i++)
for(int j = 1;j < n-1; j++)
if(FindPos(i,j,map,sb.toString())){
System.out.println((i+1)+" "+(j+1));
//return ;
}
} private static boolean FindPos(int i, int j, String[] map, String environment) {
//System.out.println(i+" "+j);
StringBuilder dir = new StringBuilder();
dir.append(map[i-1].substring(j-1, j+2));
dir.append(map[i].substring(j-1, j+2));
dir.append(map[i+1].substring(j-1, j+2));
//System.out.println("1: "+dir.toString());
if(dir.toString().equals(environment))
return true; StringBuilder dir2 = new StringBuilder();
dir2.append(map[i-1].charAt(j+1)).append(map[i].charAt(j+1)).append(map[i+1].charAt(j+1));
dir2.append(map[i-1].charAt(j)).append(map[i].charAt(j)).append(map[i+1].charAt(j));
dir2.append(map[i-1].charAt(j-1)).append(map[i].charAt(j-1)).append(map[i+1].charAt(j-1));
//System.out.println("2: "+dir2.toString());
if(dir2.toString().equals(environment))
return true; StringBuilder dir3 = new StringBuilder();
dir3.append(new StringBuilder(map[i+1].substring(j-1, j+2)).reverse());
dir3.append(new StringBuilder(map[i].substring(j-1, j+2)).reverse());
dir3.append(new StringBuilder(map[i-1].substring(j-1, j+2)).reverse());
//System.out.println("3: "+dir3.toString());
if(dir3.toString().equals(environment))
return true; StringBuilder dir4 = new StringBuilder();
dir4.append(map[i+1].charAt(j-1)).append(map[i].charAt(j-1)).append(map[i-1].charAt(j-1));
dir4.append(map[i+1].charAt(j)).append(map[i].charAt(j)).append(map[i-1].charAt(j));
dir4.append(map[i+1].charAt(j+1)).append(map[i].charAt(j+1)).append(map[i-1].charAt(j+1));
//System.out.println("4: "+dir4.toString());
if(dir4.toString().equals(environment))
return true;
return false;
}
}

  

#1094 : Lost in the City的更多相关文章

  1. hihoCoder #1094 : Lost in the City(枚举,微软苏州校招笔试 12月27日 )

    #1094 : Lost in the City 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi gets lost in the city. He ...

  2. hihocoder #1094 : Lost in the City微软苏州校招笔试 12月27日 (建图不大【暴力枚举】 子图的4种形态 1Y )

    #1094 : Lost in the City 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi gets lost in the city. He ...

  3. #1094 : Lost in the City by C solution

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi gets lost in the city. He does not know where he is ...

  4. hihoCoder#1094 Lost in the City

    原题地址 限时10s,所以不用考虑什么算法了,暴力吧 分别按照3x3视野的四个方向去地图上匹配,把符合的地点标记出来,最后统一按照从上到下,从左到右的顺序输出. 代码: #include <io ...

  5. BZOJ 2001: [Hnoi2010]City 城市建设

    2001: [Hnoi2010]City 城市建设 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 1132  Solved: 555[Submit][ ...

  6. History lives on in this distinguished Polish city II 2017/1/5

    原文 Some fresh air After your time underground,you can return to ground level or maybe even a little ...

  7. History lives on in this distinguished Polish city 2017/1/4

    原文 History lives on in this distinguished Polish city Though it may be ancient. KraKow, Poland, is a ...

  8. GeoIP Legacy City数据库安装说明

    Here is a brief outline of the steps needed to install GeoIP Legacy City on Linux/Unix. The installa ...

  9. hihoCoder#1094

    刚开始学习C语言,准备在做hiho的题目的过程中来学习,在此进行记录,如果代码中有错误或者不当的地方还请指正. 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Littl ...

随机推荐

  1. 多个Class作用于同一个元素的结果分析

    多个Class作用于同一个元素的结果分析   多个class作用于同一个元素出现样式冲突,因为权重相同,结果如何呢   [代码] <html> <head>   <sty ...

  2. 关于Response.Redirect 端口不一致的跳转

    如果内网和外网的端口号设置的不相同,那在使用Response.Redirect跳转的时候会无法成功.需要做以下设置: <system.web> <httpRuntime useFul ...

  3. 【WEB】web www http html hypermedia hypertext 技术名词的意思

    www WWW是环球信息网的缩写,(亦作"Web"."WWW"."'W3'",英文全称为"World Wide Web" ...

  4. JQuery EasyUI DataGrid列表所见所得随意导出excel

    1.抽取DataGrid列表数据 function ExportNormal(strXlsName, exportGrid, postUrl, hiddenColumns) { /// <sum ...

  5. SpringBoot前世今生

    序 本文主要讲述spring boot的由来,即其它诞生的背景,初衷,现状,及对未来的展望. 背景 在很早的年代,J2EE还是java企业级应用的王者规范,EJB风行其道.后来有一个叫Rod John ...

  6. LeetCode 345. Reverse Vowels of a String

    Write a function that takes a string as input and reverse only the vowels(元音字母) of a string. Example ...

  7. .NET Attribute 入门【笔记】

    闲谈:没有系统的学过,偶尔看看,看的也不是很清楚. 却一直不明白,本来也不难,自己动手写了个示例.结果一目了然…… Attribute —— 标记 可以对方法.类等事务进行附着.增加属性. 下面以我见 ...

  8. Delphi在创建和使用DLL的时候如果使用到string,请引入ShareMem单元

    当使用了长字符串类型的参数.变量时,如string,要引用ShareMem. 虽然Delphi中的string功能很强大,但若是您编写的Dll文件要供其它编程语言调用时,最好使用PChar类型.如果您 ...

  9. Delphi的分配及释放---New/Dispose, GetMem/FreeMem及其它函数的区别与相同

    转载自:http://www.cnblogs.com/qiusl/p/4028437.html?utm_source=tuicool 我估摸着内存分配+释放是个基础的函数,有些人可能没注意此类函数或细 ...

  10. PHP7函数大全(4553个函数)

    转载来自: http://www.infocool.net/kb/PHP/201607/168683.html a 函数 说明 abs 绝对值 acos 反余弦 acosh 反双曲余弦 addcsla ...