hdu 4452

今天模拟赛的一个模拟题;

每次看到这种题就感觉很繁琐;

这次静下心来写写,感觉还不错!就是很多错误,浪费了一点时间;

代码:

 #include<cstdio>
#include<cstring>
using namespace std; int d[][]= {{,},{,},{-,},{,-}}; struct run
{
int x,y;
int s,p,d;
} r[];
int t,n;
void go()
{
bool flag;
for(int i=; i<t; i++)
{
flag=;
if(r[].x==r[].x&&r[].y==r[].y)
{
flag=;
int a=r[].d;
r[].d=r[].d;
r[].d=a;
}
for(int j=; j<; j++)
{
if(i!=&&(i%r[j].p==)&&flag)
r[j].d=(r[j].d+)%;
r[j].x=r[j].x+d[r[j].d][]*r[j].s;
if(r[j].x<=)
{
r[j].x=(-r[j].x)+;
r[j].d=;
}
if(r[j].x>n)
{
r[j].x=n-(r[j].x-n);
r[j].d=;
}
r[j].y=r[j].y+d[r[j].d][]*r[j].s;
if(r[j].y<=)
{
r[j].y=(-r[j].y)+;
r[j].d=;
}
if(r[j].y>n)
{
r[j].y=n-(r[j].y-n);
r[j].d=;
}
}
}
}
char s[];
int main()
{
while(scanf("%d",&n)&&n)
{
for(int i=; i<; i++)
{
scanf("%s",&s);
if(s[]=='E') r[i].d=;
else if(s[]=='S') r[i].d=;
else if(s[]=='W')r[i].d=;
else if(s[]=='N')r[i].d=;
scanf("%d%d",&r[i].s,&r[i].p);
}
r[].x=,r[].y=;
r[].x=n,r[].y=n;
scanf("%d",&t);
go();
for(int i=; i<; i++)
printf("%d %d\n",r[i].y,r[i].x);
}
return ;
}
上一篇:cout 计算顺序问题


下一篇:SAP自定义打印机纸张