hdu 1033 Edge
http://acm.hdu.edu.cn/showproblem.php?pid=1033
给两点,然后又第二个点画线,单位长度为10,每次旋转90度,这里的陷阱是确定了顺时针后,逆时针要根据顺时针来确定。。
View Code
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#define maxn 207
using namespace std;
int main()
{
//freopen("d.txt","r",stdin);
char str[maxn];
int i,x,y,flag;
while(~scanf("%s",str))
{
flag = 1;
printf("300 420 moveto\n");
printf("310 420 lineto\n");
x=310;y=420;
int len=strlen(str);
for (i = 0; i < len; ++i)
{
if(str[i] == 'A')//顺时针确定
{
if(flag == 1)
{
y -= 10;
flag = 2;
}
else if(flag == 2)
{
x -= 10;
flag = 3;
}
else if(flag == 3)
{
y += 10;
flag = 4;
}
else if(flag == 4)
{
x += 10;
flag = 1;
}
printf("%d %d lineto\n",x,y);
}
else if(str[i] == 'V')
{
//如果再次顺时针旋转的话,会跳到顺时针的flag等于4的操作
//所以flag = 4然后进行相应的操作
if(flag == 1)
{
y += 10;
flag = 4;
}
else if(flag == 2)
{
x += 10;
flag = 1;
}
else if(flag == 3)
{
y -= 10;
flag = 2;
}
else if(flag == 4)
{
x -= 10;
flag = 3;
}
printf("%d %d lineto\n",x,y);
}
}
printf("stroke\nshowpage\n");
}
return 0;
}



浙公网安备 33010602011771号