luogu 题解 UVA320 Border

题目由此去


  • 题目类型:

模拟;

样例看懂了就好做。

  • 一. 题目大意:

题目就是,给你一个在大小为32 * 323232的map中的初始点,然后输入一串以 “N”,“S”,“W”,“E”的字符串。

  • 接着进行如下步骤:

“N”表示向上走,“S”表示向下走,“W”表示向左走,“E”表示向右走。

然后按照字符串的命令输出外围。


  • AC code:
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;

int n , x , y;
int nt;
char mapp[35][35] , dc;

int main(void ) {
	scanf("%d",&n);
	for (nt=1; nt<=n; nt++ ) {
		memset(mapp , '.' , sizeof mapp);//格式化 
		scanf("%d %d",&x,&y);
		while (cin>>dc) {
			if (dc == '.') {
				break;
			}
			//“N”表示向上走,“S”表示向下走,“W”表示向左走,“E”表示向右走
			if (dc == 'N') {
				mapp[y++][x]='X';// 向上,标记成X 
			}
			else if (dc == 'S') {
				mapp[--y][x - 1] = 'X';//向下,标记成X 
			}
			else if (dc == 'W') {
				mapp[y][--x] = 'X';//向左,标记成X 
			}
			else if (dc == 'E') {
				mapp[y - 1][x++] = 'X';//向右 ,标记成X 
			}
		}
		printf("Bitmap #%d\n",nt);
		for (int i=31; i>=0; i-- ) {//要上下倒过来输出。
			for (int j=0; j<32; j++ ) {
				printf("%c",mapp[i][j]);
			}
			printf("\n");
		}
		printf("\n");//换行,进行下一组数据 
	}
}
posted @ 2021-02-25 16:52  铭矾  阅读(87)  评论(0)    收藏  举报