
V AVV
300 420 moveto 310 420 lineto 310 430 lineto stroke showpage 300 420 moveto 310 420 lineto 310 410 lineto 320 410 lineto 320 420 lineto stroke showpage
今天晚上哥哥也是醉了,熬夜到这时候,不负所望,AC之,其实这个题看起来高大上的样子,读了三遍才懂它什么意思。不过我的解法确实很麻烦,但虽然写的那么复杂,唉 起码锻炼思维逻辑能力了;
提交上去后,是各位小伙子们简直理解不了的亢奋哦!不知道最近疯狂的爱上acm了,以至于天天都不愿意去上课了丫的。接下来的代码看起来很苯蛋的样子,自己都服了。妈的。
上代码:
#include<iostream>
using namespace std;
#include<string>
int main()
{
int t[200],k[200];
string str1;
string str[]={"moveto","lineto"};
while(cin>>str1)
{
t[0]=300;k[0]=420;
t[1]=310;k[1]=420;
int flag=0;
cout<<t[0]<<" "<<k[0]<<" "<<str[0]<<endl
<<t[1]<<" "<<k[1]<<" "<<str[1]<<endl;
str1=" "+str1;
for(int i=2;i<str1.size();i++)
{
switch(str1[i])
{
case 'V':
{
if(flag)
{
if((t[i-1]==t[i-2]))
{
if((k[i-1]>k[i-2]))
{
k[i]=k[i-1];
t[i]=t[i-1]-10;
}
else
{
k[i]=k[i-1];
t[i]=t[i-1]+10;
}
}
else
{
if(t[i-1]>t[i-2])
{
t[i]=t[i-1];
k[i]=k[i-1]+10;
}
else
{
t[i]=t[i-1];
k[i]=k[i-1]-10;
}
}
cout<<t[i]<<" "<<k[i]<<" "<<str[1]<<endl;
}
else
{
cout<<t[1]<<" "<<k[1]+10<<" "<<str[1]<<endl;
k[2]=k[1]+10;
t[2]=t[1];
}
flag=1;
break;
}
case'A':
{
if(flag)
{
if(t[i-1]==t[i-2])
{
if(k[i-1]<k[i-2])
{
t[i]=t[i-1]-10;
k[i]=k[i-1];
}
else
{
t[i]=t[i-1]+10;
k[i]=k[i-1];
}
}
else
{
if(t[i-1]<t[i-2])
{
k[i]=k[i-1]+10;
t[i]=t[i-1];
}
else
{
k[i]=k[i-1]-10;
t[i]=t[i-1];
}
}
cout<<t[i]<<" "<<k[i]<<" "<<str[1]<<endl;
}
else
{
cout<<t[1]<<" "<<k[1]-10<<" "<<str[1]<<endl;
k[2]=k[1]-10;
t[2]=t[1];
}
flag=1;
break;
}
default:
break;
}
}
cout<<"stroke"<<endl
<<"showpage"<<endl;
}
return 0;
原文地址:http://blog.csdn.net/lsgqjh/article/details/44478897