Zoj1300:Borde

Border

Time Limit: 2 Seconds       Memory Limit: 65536 KB

You are to write a program that draws a border around a closed path into a bitmap, as displayed in the following figure:

The path is closed and runs along the grid lines, i.e. between the squares of the grid. The path runs counter-clockwise, so if following the path is considered as going ``forward'', the border pixels are always to the ``right'' of the path. The bitmap always covers 32 by 32 squares and has its lower left corner at (0,0). You can safely assume that the path never touches the bounding rectangle of the bitmap and never touches or crosses itself. Note that a bit gets set if it is on the outside of the area surrounded by the path and if at least one of its edges belongs to the path, but not if only one of its corners is in the path. (A look at the convex corners in the figure should clarify that statement.)


Input

The first line of the input contains the number of test cases in the file. Each test case that follows consists of two lines. The first line of each case contains two integer numbers x and y specifying the starting point of the path. The second line contains a string of variable length. Every letter in the string symbolizes a move of length one along the grid. Only the letters `W' (``west''), `E' (``east''), `N' (``north''), `S' (``south''), and `.' (``end of path'', no move) appear in the string. The end-of-path character (`.') is immediately followed by the end of the line.


Output

For each test case, output a line with the number of the case (`Bitmap #1', `Bitmap #2', etc.). For each row of the bitmap from top to bottom, print a line where you print a character for every bit in that row from left to right. Print an uppercase `X' for set bits and a period `.' for unset bits. Output a blank line after each bitmap.


Sample Input

1
2 1
EENNWNENWWWSSSES.

Sample Output

Bitmap #1
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
.XXX............................
X...X...........................
X..X............................
X...X...........................
.X..X...........................
..XX............................


题解:参考http://blog.csdn.net/wxb1553725576/article/details/13007629

AC code:

#include <iostream>
using namespace std;
int main()
{
	int n,t=1,i,j,x,y;
	char c, map[32][32];
	cin>>n;
	while(n--)
	{
		for(i=0;i<32; i++)
			for(j=0; j<32; j++)
                  map[i][j]='.';
			cin>>x>>y;
			while(cin>>c && c!='.')
			{
				if(c=='N')
				{
					map[31-y][x]='X';
					y++;
				}else if(c=='S')
				{
					map[32-y][x-1]='X';
					y--;
				}else if(c=='W')
				{
					map[31-y][x-1]='X';
					x--;
				}else if(c=='E')
				{
					map[32-y][x]='X';
					x++;
				}
			}
			cout<<"Bitmap #"<<t++<<endl;
			for(i=0 ;i<32; i++)
			{
				for(j=0; j<32; j++)
					cout<<map[i][j];
				cout<<endl;
			}
		
				cout<<endl;
          
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值