您的位置:首页 > 其它

HDU 1033

2016-04-03 12:28 204 查看
这道题难点在于读题,题读懂了,原理是很易懂的。

题意:起点为(300,420)设前一个为横坐标,后一个为纵坐标,初始移动方向是向右,所以第二点为(330,420),V是向左拐,A是向右拐,每次转向后走10个单位,最后把初始位置和每次转向位置列出来。

设方向为一个变量{1,2,3,4},每次改变都对这个变量加或减,超范围则换算,然后分四种情况对坐标进行更改。

#include<stdio.h>
#include<string.h>
int main()
{
char c[200];
int a,b,t,i;
memset(c,0,sizeof(c));
while(~scanf("%s",c))
{
a=310;
b=420;
printf("300 420 moveto\n");
printf("310 420 lineto\n");
t=1;
for(i=0; i<strlen(c); i++)
{
if(c[i]=='V')
t++;
if(c[i]=='A')
t--;
if(t>4)
t-=4;
if(t<1)
t+=4;
if(t==1)
{
a+=10;
}
if(t==2)
{
b+=10;
}
if(t==3)
{
a-=10;
}
if(t==4)
{
b-=10;
}
printf("%d %d lineto\n",a,b);
}
printf("stroke\nshowpage\n");
memset(c,0,sizeof(c));
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: