【hdu 4452】Running Rabbits 题解&代码(C++)

来源:互联网 发布:淘宝店铺的网址怎么看 编辑:程序博客网 时间:2024/05/21 21:44

题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=4452
题解:
模拟兔子走路过程即可。
代码:

#include<iostream>#include<algorithm>#include<stdio.h>#include<math.h>using namespace std;int n,k,v1,v2,t1,t2;char s1[3],s2[3];int d[2][4]={{-1,0,1, 0},         { 0,1,0,-1}};int z(char a){    if (a=='N') return 0;    if (a=='E') return 1;    if (a=='S') return 2;    return 3;}int main(){    while(1)    {        scanf("%d",&n);        if (n==0) return 0;        scanf("%s%d%d",s1,&v1,&t1);        scanf("%s%d%d",s2,&v2,&t2);        scanf("%d",&k);        int f1=z(s1[0]);        int f2=z(s2[0]);        int stx1=1,sty1=1;        int stx2=n,sty2=n;        //cout<<0<<endl;        //cout<<f1<<' '<<f2<<endl;        for (int i=1;i<=k;i++)        {            int nex1=stx1+d[0][f1]*v1;            int ney1=sty1+d[1][f1]*v1;            int nex2=stx2+d[0][f2]*v2;            int ney2=sty2+d[1][f2]*v2;             if (nex1<1)            {                int cha=abs(nex1-1);                nex1=1+cha;                f1=(f1+2)%4;            }            if (nex1>n)            {                int cha=abs(nex1-n);                nex1=n-cha;                f1=(f1+2)%4;            }                if (ney1<1)                        {                                int cha=abs(ney1-1);                                ney1=1+cha;                                f1=(f1+2)%4;                        }                        if (ney1>n)                        {                                int cha=abs(ney1-n);                                ney1=n-cha;                                f1=(f1+2)%4;                }                        if (nex2<1)                        {                                int cha=abs(nex2-1);                                nex2=1+cha;                                f2=(f2+2)%4;                        }                        if (nex2>n)                        {                                int cha=abs(nex2-n);                                nex2=n-cha;                                f2=(f2+2)%4;                        }                        if (ney2<1)                        {                                int cha=abs(ney2-1);                                ney2=1+cha;                                f2=(f2+2)%4;                        }                        if (ney2>n)                        {                                int cha=abs(ney2-n);                                ney2=n-cha;                                f2=(f2+2)%4;            }            stx1=nex1;sty1=ney1;            stx2=nex2;sty2=ney2;            if (stx1==stx2&&sty1==sty2)            {                swap(f1,f2);                continue;            }            if (i%t1==0)            f1=(f1+3)%4;            if (i%t2==0)            f2=(f2+3)%4;        //  cout<<i<<endl;        //  cout<<f1<<' '<<stx1<<' '<<sty1<<endl;        //  cout<<f2<<' '<<stx2<<' '<<sty2<<endl;        }           printf("%d %d\n",stx1,sty1);        printf("%d %d\n",stx2,sty2);    }} 
0 0
原创粉丝点击