程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> poj2632--模擬

poj2632--模擬

編輯:C++入門知識

poj2632--模擬


/** rief poj 2632
 *
 * param date 2014/8/3
 * param state AC
 * 
eturn memory 776k time 16ms
 *
 */

#include 
#include 
#include 

using namespace std;

const int MAXN=101;
int Map[MAXN][MAXN];

int A,B;
int N,M;
int xf[4]={-1,0,1,0};
int yf[4]={0,1,0,-1};

struct Robot
{
    int x;
    int y;
    //char dir;
    int dir;
    //int num;
};

Robot robots[MAXN];

//將方向數字化
int charDir2Int(char cDir)
{
    switch(cDir)
    {
    case 'E':
        return 2;
    case 'S':
        return 3;
    case 'W':
        return 0;
    case 'N':
        return 1;
    };
}

//模擬搜索
bool Forward(int s,int t)
{
    int x,y;
    int d=robots[s].dir;
    x=robots[s].x;
    y=robots[s].y;
    Map[x][y]=0;//走過為0
    for(int i=0;iA || y<1 || y>B)
        {
            cout<>K;
    for(int k=0;k>A>>B;
        cin>>N>>M;
        for(int i=1;i<=N;i++)
        {
            int x,y;
            char dir;
            cin>>x>>y>>dir;
            robots[i].x=x;
            robots[i].y=y;
            robots[i].dir=charDir2Int(dir);
            //robots[i].num=i;
            Map[x][y]=i;
        }
        bool f=false;//it means that OK
        for(int j=0;j>num>>op>>repeat;
            //
            if(!f)f=Action(num,op,repeat);
        }
        if(!f)cout<

 

 

 

模擬算法:根據題目所述移動步驟逐步進行,利用數組array[i][j]代表(i,j)位置處的robot編號,沒有則為0.

利用robot結構體記錄下每個機器人當前的位置和方向。

對於'F'指令,需判斷前進是否出界和前進的位置是否已有機器人。

對於'L'和'R'轉向指令,只需修改機器人的方向值,注意同一方向轉四次等於沒轉。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved