当前位置: 代码迷 >> 综合 >> hdu - 1033 - Edge
  详细解决方案

hdu - 1033 - Edge

热度:26   发布时间:2024-01-10 13:51:38.0

题意:输入1行命令,由A与V组成,A表示顺时针旋转,V表示逆时针旋转,初始点在(300, 420),先往正东方向走一步到(310, 420),然后开始按输入的命令行走,输出每走一步的坐标。(命令字符串长度小于200)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1033

——>>训练的第一题,第一次看题目,不知所云,放了,今天硬着头皮看了一次,明了,模拟走下去就是。

#include <cstdio>
#include <cstring>using namespace std;const int maxn = 200 + 10;void moveto(int &x, int &y, char &dir, char turn)
{switch(dir){case 'E':{if(turn == 'A'){y -= 10;dir = 'S';}else{y += 10;dir = 'N';}break;}case 'S':{if(turn == 'A'){x -= 10;dir = 'W';}else{x += 10;dir = 'E';}break;}case 'W':{if(turn == 'A'){y += 10;dir = 'N';}else{y -= 10;dir = 'S';}break;}case 'N':{if(turn == 'A'){x += 10;dir = 'E';}else{x -= 10;dir = 'W';}break;}}
}
int main()
{char m[maxn];while(~scanf("%s", m)){printf("300 420 moveto\n310 420 lineto\n");int len = strlen(m), i, x = 310, y = 420;char dir = 'E';for(i = 0; i < len; i++){moveto(x, y, dir, m[i]);printf("%d %d lineto\n", x, y);}printf("stroke\nshowpage\n");}return 0;
}


  相关解决方案