zoukankan      html  css  js  c++  java
  • “树人杯”暨第三届辽宁科技大学校园程序设计竞赛正赛C 机器人(蓝)

    有个机器人,它根据给定的指令而在一个矩阵行走。指令有E,W,S,N四种分别代表东(east),西(west),南(south),北(north).直到出现回路(走到已经走过的地方)或者走出范围才结束,要求输出结束的坐标和结束的理由。 

    举个例子,如图1,它从起始位置开始(此时它处在(0,4)的位置),遇到的是W所以向西走,走到(0,3)的位置。又遇到S,于是向南走到(1,3)的位置…最后到(1,0)的位置遇到W,向西走就走出范围了,此时就结束并将结束是的位置输出。此时应该输出
    (1,0) to exit
    同样的走法,在图2中当它走到(0,2)的时候遇到S然后走到(1,2),而
    (1,2)是之前走过的(出现了回路)。此时也是满足结束的条件,这时应该输出
    (1,2) to a loop

    输入的第一行为整数T(T>0)表示有组测试数据。接下来的T组测试数据,每组都以N,M,I,J(0〈N ,M〈=20)开头。N和M分别表示行和列的个数。I,J分别表示机器人的开始坐标。然后是N行M列的矩阵,其中的元素表示指令。
    如果是因为出界而结束的,输出结束时的坐标加to exit ,例如 (1,0) to exit
    如果是因为出现回路而结束的,输出出现回路的坐标加to a loop ,例如 (1,2) to a loop

    Input

    Output

    Sample Input

    2
    3 6 0 4
    N E E S W E
    W W W E S S
    S N W W W W
    4 5 0 0
    S E S W E
    E E S N W
    N W E E N
    E W S E N

    Sample Output

    (1,0) to exit
    (1,2) to a loop
    #include<iostream>
    using namespace std;
    char map[15][15];
    void zoulu(int &i,int &j)
    {
    if(map[i][j]=='W')
    j=j-1;
    else if(map[i][j]=='E')
    j=j+1;
    else if(map[i][j]=='S')
    i=i+1;
    else if(map[i][j]=='N')
    i=i-1;
    }
    int main()
    {
    int a,n,i,j,k;
    memset(map,'0',sizeof (map) );
    cin>>a;
    bool biaoji[1000][1000];
    bool p=true;
    while(a--)
    {
    memset(biaoji,false,sizeof (biaoji) );
    int a[4];
    for(i=0;i<4;i++)
    cin>>a[i];
    for(i=0;i<a[0];i++)
    {
    for(j=0;j<a[1];j++)
    {
    cin>>map[i][j];
    }
    }
    n=a[2];
    k=a[3];
    int tn,tk;
    while(map[n][k]=='W' || map[n][k]=='S' || map[n][k]=='E'|| map[n][k]=='N')
    {
    if(biaoji[n][k]==true)
    {
    p=false;
    tn=n;
    tk=k;
    break;
    }
    if(n<0 || k<0 || n >= a[0] || k>= a[1])
    break;
    tn=n;
    tk=k;
    biaoji[n][k]=true;
    zoulu(n,k);
    }
    if(p==true)
    {
    cout<<"("<<tn<<","<<tk<<")"<<" to exit"<<endl;
    }
    else
    cout<<"("<<n<<","<<k<<")"<<" to a loop"<<endl;
    p=true;
    }
    return 0;
    }
  • 相关阅读:
    巧用table的rules属性设置表格的边框掩饰。。。
    JS日期和时间
    onchange事件验证文本框格式,不正确光标返回原文本框,这个js怎么写?
    简易万用表
    在单片机中的空函数
    地感线圈的讲究
    全桥片
    这个当单片机程序怎么会不停的通过串口发数据,设置波特率为9600,但是串口软件接受数据不对(初学者,请高手指教)
    今天开博
    关于二极管
  • 原文地址:https://www.cnblogs.com/anderson0/p/1445345.html
Copyright © 2011-2022 走看看