#P1132. Border
Border
题目描述
你需要编写一个程序,在一个位图中围绕一条封闭路径绘制边界,如下图所示:
该路径是封闭的,并且沿着网格线运行,即在网格的方格之间。路径按逆时针方向运行,所以如果将沿着路径视为 “向前” 移动,那么边界像素总是在路径的 “右侧” 。位图始终覆盖 个方格,且其左下角位于坐标 处。你可以放心地假设路径永远不会接触到位图的边界矩形,也永远不会接触或交叉自身。请注意,如果一个方格位于路径所包围区域的外侧,并且其至少一条边属于路径,那么该方格对应的位就会被设置;但如果只有其一个角在路径上,则该位不会被设置。(查看图中的凸角应该能澄清这一说法)。
输入格式
输入文件的第一行包含文件中的测试用例数量。接下来的每个测试用例由两行组成。每个测试用例的第一行包含两个整数 x
和 y
,用于指定路径的起点。第二行包含一个长度可变的字符串。字符串中的每个字母表示沿着网格移动一格的操作。字符串中只出现字母 'W'(表示 “西”)、'E'(表示 “东”)、'N'(表示 “北”)、'S'(表示 “南”)和 '.'(表示 “路径结束”,不进行移动)。路径结束字符('.')后面紧接着是行尾。
输出格式
对于每个测试用例,输出一行,格式为 “Bitmap #n”(其中 n
是测试用例的编号,如 'Bitmap #1'、'Bitmap #2' 等)。对于位图的每一行(从上到下),打印一行内容,其中从左到右为该行的每个位打印一个字符。对于设置的位,打印大写的 'X';对于未设置的位,打印 '.'。在每个位图输出之后,输出一个空行。
1
2 1
EENNWNENWWWSSSES.
Bitmap #1
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
.XXX............................
X...X...........................
X..X............................
X...X...........................
.X..X...........................
..XX............................
来源
1996年西南欧洲区域竞赛