• POJ 2632 Crashing Robots


    /* 题目很好理解,要你判断机器人的路径,输出
    * 碰撞信息,关键是题目的二维数组需要转换(下标不一样)
    * 还有就是机器人的状态要及时更新,我就在这儿调试了
    * 半天才找出来的,郁闷了。
    * 机器人状态: 坐标x,y,方向drt,方向要及时更新,
    * 地图也要及时更新,就差不多了。
    */

    code
    #include<iostream>
    using namespace std;
    struct Node
    {
        
    int x,y;
        
    int drt;
    }rob[
    105];
    int map[105][105],n,m;
    int check(int index,int step)
    {
        
    int i=0;
        
    int x = rob[index].x-1;
        
    int y = rob[index].y-1;
        map[x][y] 
    = -1;
        
    if(rob[index].drt == 0)
        {
            
    for(i=1;i<=step;++i)
                
            {
                
    if(x+i>=n)
                    
    return -1;
                
    if(map[x+i][y]==-1)
                    
    continue;
                
    else
                    
    return map[x+i][y];
            }
            map[x
    +step][y]=index;
            rob[index].x
    +=step;
        } 
    if(rob[index].drt == 1)
        {
            
    for(i=1;i<=step;++i)
            {
                
    if(y+i>=m)
                    
    return -1;
                
    if(map[x][y+i]!=-1)
                    
    return map[x][y+i];
            }
            map[x][y
    +step]=index;
            rob[index].y 
    += step;
        } 
    if(rob[index].drt == 3)
        {
            
    for(i=1;i<=step;++i)
            {
                
    if(y-i<0)
                    
    return -1;
                
    if(map[x][y-i]!=-1)
                    
    return map[x][y-i];
            }
            map[x][y
    -step]=index;
            rob[index].y 
    -=step;
        }
    if(rob[index].drt == 2
        {
            
    for(i=1;i<=step;++i)
            {
                
    if(x-i<0)
                    
    return -1;
                
    if(map[x-i][y]!=-1)
                    
    return map[x-i][y];
            }
            map[x
    -step][y]=index;
            rob[index].x 
    -=step;
        }
        
    return 0;
    }
    int main()
    {
        
    char ch;
        
    int i,j,k,time,nr_rob,nr_ins,tmp,rep,num_rob,flag;
        cin
    >>time;
        
    while(time--)
        {
            cin
    >>m>>n;
            cin
    >>nr_rob>>nr_ins;
            
    for(i=0;i<n;++i)
                
    for(j=0;j<m;++j)
                    map[i][j]
    =-1;
            
    for(i=1;i<=nr_rob;++i)
            {
                
    //scanf("%d%d%c",&(rob[i].y),&(rob[i].x),&ch);
                cin>>rob[i].y>>rob[i].x>>ch;
                
    if(ch=='N') tmp = 0;
                
    else if(ch=='E') tmp = 1;
                
    else if(ch=='S') tmp = 2;
                
    else if(ch=='W') tmp =3;
                rob[i].drt 
    = tmp;
                map[rob[i].x
    -1][rob[i].y-1= i;
            }
            flag 
    = 0;
            
    for(i=0;i<nr_ins;++i)
            {
                cin
    >>num_rob>>ch>>rep;
                
    if(ch=='L')
                    rob[num_rob].drt 
    = (rob[num_rob].drt+3*rep)%4;
                
    else if(ch=='R')
                    rob[num_rob].drt 
    = (rob[num_rob].drt+1*rep)%4;
                
    else if(ch =='F')
                {
                    
    if(flag ==1)
                        
    continue;
                    tmp 
    = check(num_rob,rep);
                    
    if(tmp == 0)
                        
    continue;
                    
    else if(tmp == -1)
                    {
                        printf(
    "Robot %d crashes into the wall\n",num_rob);
                        flag 
    = 1;
                    }
                    
    else 
                    {
                        printf(
    "Robot %d crashes into robot %d\n",num_rob,tmp);
                        flag 
    = 1;
                    }
                }
            }
            
    if(flag == 0)
                cout
    <<"OK"<<endl;
        }
        
    return 0;

    }

  • 相关阅读:
    WebService出错 Maximum message size quota for incoming messages (65536) has been exceeded.已超过传入消息(65536)的最大消息大小配额
    php 获取系统时间
    JavaSctipt 控制网页 前进,后退
    放A片的文件夹的名字
    玩玩独轮车
    3月18日周六骑行三水大旗头村——广东名镇之一
    叫春的猫
    抓紧锻炼身体噢!
    使用Zend Framework中的 Zend_Pdf来创建pdf文档
    虚拟主机示例
  • 原文地址:https://www.cnblogs.com/lvpengms/p/1662785.html
Copyright © 2020-2023  润新知