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 14120501080 at 2015-07-29 11:21:55 on Problem 2632
#include <iostream>
#include <cstring>

using namespace std;

struct node
{
    int r,c;
} robot[101];

int main()
{
    int k,a,b,n,m;//a,b长宽,n robots,m命令数
    int x,y;
    int crash,crashrobot;
    int direction[101];
    char z;
    int map[101][101];
    cin>>k;
    while(k--)
    {
        crash=0;
        memset(robot,0,sizeof(robot));
        memset(direction,0,sizeof(direction));
        cin>>b>>a;
        cin>>n>>m;
        for(int i=0; i<n; i++)
        {
            cin>>y>>x>>z;
            map[x][y]=i+1;
            robot[i+1].r=x;
            robot[i+1].c=y;
            switch(z)
            {
            case 'N' :
                direction[i+1]=3;
                break;
            case 'S' :
                direction[i+1]=1;
                break;
            case 'W' :
                direction[i+1]=2;
                break;
            case 'E' :
                direction[i+1]=0;
                break;
            }
        }
        for(int i=0; i<m; i++)
        {
            cin>>x>>z>>y;
            if(!crash)
            {
                switch(z)
                {
                case 'L' :
                    y%=4;
                    direction[x]=(direction[x]+4-y)%4;
                    break;
                case 'R' :
                    y%=4;
                    direction[x]=(direction[x]+y)%4;
                    break;
                case 'F' :
                    if(direction[x]==0)
                    {
                        while(y--)
                        {
                            map[robot[x].r][robot[x].c]=0;
                            robot[x].c++;
                            if(robot[x].c==b+1)
                            {
                                crash=-1;
                                crashrobot=x;
                                break;
                            }
                            if(map[robot[x].r][robot[x].c])
                            {
                                crash=map[robot[x].r][robot[x].c];
                                crashrobot=x;
                                break;
                            }
                            map[robot[x].r][robot[x].c]=x;
         //                   cout<<"当前位置"<<robot[x].r<<' '<<robot[x].c<<endl;
                        }
                    }
                    else if(direction[x]==1)
                    {
                        while(y--)
                        {
                            map[robot[x].r][robot[x].c]=0;
                            robot[x].r--;
                            if(robot[x].r==0)
                            {
                                crash=-1;
                                crashrobot=x;
                                break;
                            }
                            else if(map[robot[x].r][robot[x].c])
                            {
                                crash=map[robot[x].r][robot[x].c];
                                crashrobot=x;
                                break;
                            }
                            map[robot[x].r][robot[x].c]=x;
                     //                                   cout<<"当前位置"<<robot[x].r<<' '<<robot[x].c<<endl;
                        }
                    }
                    else if(direction[x]==2)
                    {
                        while(y--)
                        {
                            map[robot[x].r][robot[x].c]=0;
                            robot[x].c--;
                            if(robot[x].c==0)
                            {
                                crash=-1;
                                crashrobot=x;
                                break;
                            }
                            else if(map[robot[x].r][robot[x].c])
                            {
                                crash=map[robot[x].r][robot[x].c];
                                crashrobot=x;
                                break;
                            }
                            map[robot[x].r][robot[x].c]=x;
                    //                                    cout<<"当前位置"<<robot[x].r<<' '<<robot[x].c<<endl;
                        }
                    }
                    else
                    {
                        while(y--)
                        {
                            map[robot[x].r][robot[x].c]=0;
                            robot[x].r++;
                            if(robot[x].r==a+1)
                            {
                                crash=-1;
                                crashrobot=x;
                                break;
                            }
                            else if(map[robot[x].r][robot[x].c])
                            {
                                crash=map[robot[x].r][robot[x].c];
                                crashrobot=x;
                                break;
                            }
                            map[robot[x].r][robot[x].c]=x;
                         //                               cout<<"当前位置"<<robot[x].r<<' '<<robot[x].c<<endl;
                        }
                    }
                }
            }
        }
        if(crash)
        {
            if(crash==-1)
                cout<<"Robot "<<crashrobot<<" crashes into the wall"<<endl;
            else
                cout<<"Robot "<<crashrobot<<" crashes into robot "<<crash<<endl;
        }
        else
            cout<<"OK"<<endl;
    }
    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