Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

过了的朋友能帮我看看吗?代码风格良好:)

Posted by masque at 2009-03-29 12:43:57 on Problem 2632
#include <iostream>

using namespace std;

struct Robert
{
    int c,r;
    int num;
    int dir;
};

struct Order
{
    int re;
    int Rnum;
    char T;
};


Robert R[110];
Order O[110];
int sto[150][150];
int n,m;
int p,q;
void Read()
{
    cin>>n>>m;
    cin>>p>>q;
    char tmp;
    for (int i=1;i<=p;i++)
    {
        cin>>R[i].c;
        cin>>R[i].r;
        sto[R[i].r][R[i].c]=i;
        cin>>tmp;
        int z;
        switch (tmp)
        {
        case 'N':
        {
            z=0;
            break;
        }
        case 'W':
        {
            z=1;
            break;
        }
        case 'S':
        {
            z=2;
            break;
        }
        case 'E':
        {
            z=3;
            break;
        }
        }
        R[i].dir=z;
    }
    for (int i=1;i<=q;i++)
    {
        cin>>O[i].Rnum;
        cin>>O[i].T;
        cin>>O[i].re;
    }
}

void solve()
{
    int Rnum;
    char Ac;
    int re;
    for (int i=1;i<=q;i++)
    {
        Rnum=O[i].Rnum;
        Ac=O[i].T;
        re=O[i].re;
        for (int k=1;k<=re;k++)
        {
            switch (Ac)
            {
            case 'L':
            {
                R[Rnum].dir=(R[Rnum].dir-1+4)%4;
                break;
            }
            case 'R':
            {
                R[Rnum].dir=(R[Rnum].dir+1)%4;
                break;
            }
            case 'F':
            {
                int COL,ROW;

                sto[R[Rnum].r][R[Rnum].c]=0;
                if (R[Rnum].dir==0)
                {
                    ROW=R[Rnum].r-1;
                    COL=R[Rnum].c;
                }
                else if (R[Rnum].dir==1)
                {
                    ROW=R[Rnum].r;
                    COL=R[Rnum].c-1;
                }
                else if (R[Rnum].dir==2)
                {
                    ROW=R[Rnum].r+1;
                    COL=R[Rnum].c;
                }
               else if (R[Rnum].dir==3)
                {
                    ROW=R[Rnum].r;
                    COL=R[Rnum].c+1;
                }

                R[Rnum].r=ROW;
                R[Rnum].c=COL;

                if (ROW<=0||ROW>m||COL<=0||COL>n)
                {
                    cout<<"Robot "<<Rnum<<" crashes into the wall"<<endl;
                    return ;
                }
                if (sto[ROW][COL]!=0)
                {
                    cout<<"Robot "<<Rnum<<" crashes into robot "<<sto[ROW][COL]<<endl;
                    return ;
                }
                sto[ROW][COL]=Rnum;
                break;
            }
            }
        }
    }
    cout<<"OK"<<endl;
}


int main()
{
    int T;
    cin>>T;
    while (T--)
    {
        memset(sto,0,sizeof(sto));
        Read();
        solve();
    }

    return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator