luogu 题解 UVA320 Border
- 题目类型:
模拟;
样例看懂了就好做。
- 一. 题目大意:
题目就是,给你一个在大小为32 * 3232∗32的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");//换行,进行下一组数据
}
}

浙公网安备 33010602011771号