• poj 2632 Crashing Robots(模拟)


    题意分析:

          对机器人的移动作可能结果;

           1:超出矩阵范围

           2:和其他机器人相撞

           3:OK

         对于每次命令进行模拟和判断,自己写的太乱了代码 200+ ;

         第一次做的忘了对相撞的加以判断,WA ,看了discussion 里的数据

         才找到错误;细心!!!

    #include<stdio.h>
    #include<string.h>
    int map[105][105];
    struct node
    {
    int x,y;
    char dir;
    }grah[105];
    int main()
    {
    int t;scanf("%d",&t);
    while(t--)
    {
    int x,y;
    memset(map,0,sizeof(map));
    scanf("%d%d",&x,&y);
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
    {

    scanf("%d%d %c",&grah[i].x,&grah[i].y,&grah[i].dir);
    map[grah[i].x][grah[i].y]=1;
    }
    int flag=0;
    for(int i=1;i<=m;i++)
    {
    char str1;int xl,yl;
    scanf("%d %c %d",&xl,&str1,&yl);
    if(grah[xl].dir=='E'&&!flag)
    {
    if(str1=='L')
    {
    yl%=4;
    if(yl==1)
    grah[xl].dir='N';
    else if(yl==2)
    grah[xl].dir='W';
    else if(yl==3)
    {
    grah[xl].dir='S';
    }

    }
    else if(str1=='R'&&!flag)
    {
    yl%=4;
    if(yl==1)
    grah[xl].dir='S';
    else if(yl==2)
    grah[xl].dir='W';
    else if(yl==3)
    {
    grah[xl].dir='N';
    }
    }
    else if(!flag)
    {
    map[grah[xl].x][grah[xl].y]=0;
    // grah[xl].x+=yl;
    for(int j=1;j<=yl&&!flag;j++)
    {
    grah[xl].x++;
    if(map[grah[xl].x][grah[xl].y])
    {
    for(int k=1;k<=n;k++)
    {
    if(k==xl) continue;
    if(grah[k].x==grah[xl].x&&grah[k].y==grah[xl].y)
    {
    flag=1;
    printf("Robot %d crashes into robot %d\n",xl,k);
    break;
    }

    }
    }
    if(grah[xl].x<1||grah[xl].x>x||grah[xl].y<1||grah[xl].y>y)
    {
    break;
    }

    }
    if(grah[xl].x<1||grah[xl].x>x||grah[xl].y<1||grah[xl].y>y);
    else map[grah[xl].x][grah[xl].y]=1;
    }
    }
    else if(grah[xl].dir=='W'&&!flag)
    {

    if(str1=='L'&&!flag)
    {
    yl%=4;
    if(yl==1)
    grah[xl].dir='S';
    else if(yl==2)
    grah[xl].dir='E';
    else if(yl==3)
    {
    grah[xl].dir='N';
    }
    }
    else if(str1=='R')
    {
    yl%=4;
    if(yl==1)
    grah[xl].dir='N';
    else if(yl==2)
    grah[xl].dir='E';
    else if(yl==3)
    {
    grah[xl].dir='S';
    }
    }
    else if(!flag)
    {
    map[grah[xl].x][grah[xl].y]=0;
    // grah[xl].x-=yl;
    for(int j=1;j<=yl&&!flag;j++)
    {
    grah[xl].x--;
    if(map[grah[xl].x][grah[xl].y])
    {
    for(int k=1;k<=n;k++)
    {
    if(k==xl) continue;
    if(grah[k].x==grah[xl].x&&grah[k].y==grah[xl].y)
    {
    flag=1;
    printf("Robot %d crashes into robot %d\n",xl,k);
    break;
    }

    }
    }
    if(grah[xl].x<1||grah[xl].x>x||grah[xl].y<1||grah[xl].y>y)
    {
    break;
    }

    }
    if(grah[xl].x<1||grah[xl].x>x||grah[xl].y<1||grah[xl].y>y);
    else map[grah[xl].x][grah[xl].y]=1;
    }
    }
    else if(grah[xl].dir=='N'&&!flag)
    {
    if(str1=='L')
    {
    yl%=4;
    if(yl==1)
    grah[xl].dir='W';
    else if(yl==2)
    grah[xl].dir='S';
    else if(yl==3)
    {
    grah[xl].dir='E';
    }
    }
    else if(str1=='R')
    {
    yl%=4;
    if(yl==1)
    grah[xl].dir='E';
    else if(yl==2)
    grah[xl].dir='S';
    else if(yl==3)
    {
    grah[xl].dir='W';
    }
    }
    else
    {
    map[grah[xl].x][grah[xl].y]=0;
    //grah[xl].y+=yl;
    for(int j=1;j<=yl&&!flag;j++)
    {
    grah[xl].y++;
    if(map[grah[xl].x][grah[xl].y])
    {
    for(int k=1;k<=n;k++)
    {
    if(k==xl) continue;
    if(grah[k].x==grah[xl].x&&grah[k].y==grah[xl].y)
    {
    flag=1;
    printf("Robot %d crashes into robot %d\n",xl,k);
    break;
    }

    }
    }
    if(grah[xl].x<1||grah[xl].x>x||grah[xl].y<1||grah[xl].y>y)
    {
    break;
    }
    }
    if(grah[xl].x<1||grah[xl].x>x||grah[xl].y<1||grah[xl].y>y);
    else map[grah[xl].x][grah[xl].y]=1;
    }
    }
    else if(!flag)
    {
    if(str1=='L')
    {
    yl%=4;
    if(yl==1)
    grah[xl].dir='E';
    else if(yl==2)
    grah[xl].dir='N';
    else if(yl==3)
    {
    grah[xl].dir='W';
    }
    }
    else if(str1=='R')
    {
    yl%=4;
    if(yl==1)
    grah[xl].dir='W';
    else if(yl==2)
    grah[xl].dir='N';
    else if(yl==3)
    {
    grah[xl].dir='E';
    }
    }
    else if(!flag)
    {
    map[grah[xl].x][grah[xl].y]=0;
    // grah[xl].y-=yl;
    for(int j=1;j<=yl&&!flag;j++)
    {
    grah[xl].y--;
    if(map[grah[xl].x][grah[xl].y])
    {
    for(int k=1;k<=n;k++)
    {
    if(k==xl) continue;
    if(grah[k].x==grah[xl].x&&grah[k].y==grah[xl].y)
    {
    flag=1;
    printf("Robot %d crashes into robot %d\n",xl,k);
    break;
    }

    }
    }
    if(grah[xl].x<1||grah[xl].x>x||grah[xl].y<1||grah[xl].y>y)
    {
    break;
    }
    }
    if(grah[xl].x<1||grah[xl].x>x||grah[xl].y<1||grah[xl].y>y) ;
    else map[grah[xl].x][grah[xl].y]=1;
    }
    }
    if(flag) continue;
    if(grah[xl].x<1||grah[xl].x>x||grah[xl].y<1||grah[xl].y>y)
    {
    printf("Robot %d crashes into the wall\n",xl);
    flag=1;
    }
    }
    if(!flag) puts("OK");
    }
    }



    Just a little, maybe change the world
  • 相关阅读:
    JS和jQuery获取节点的兄弟,父级,子级元素
    HTTP协议详解
    HTML5自定义属性对象Dataset
    当你输入一个网址后都发生什么
    javascript实现ajax
    第一次项目总结
    CSS简单布局总结
    animate.css总结
    自定义动画
    CSS 第四天 多重背景 变形 过渡
  • 原文地址:https://www.cnblogs.com/skyming/p/2385779.html
Copyright © 2020-2023  润新知