zoukankan      html  css  js  c++  java
  • POJ1573 Robot Motion 模拟水题

    http://poj.org/problem?id=1573

    题意:给定一个初始位置,让其在迷宫里走,看是否能走出。能走出就输出所走的步数,否则输出进入循环之前的步数和循环的步数。

    思路:用If模拟所走的路线,用for语句,最多走n*m步,如果走出迷宫范围就break。否则,用map数组记录所走的步数,表示是否走过。当map!=0时,就走出循环。

    具体看代码。

      1 #include<cstdio>
      2 #include<iostream>
      3 #include<algorithm>
      4 #include<cstring>
      5 using namespace std;
      6 char a[15][15];
      7 int map[15][15];
      8 main()
      9 {
     10     int n,m,t,q,w,ans,e,an,i;
     11     while(scanf("%d%d%d",&n,&m,&t)!=EOF&&(n!=0||m!=0||t!=0))
     12     {
     13         memset(map,0,sizeof(map));
     14         for(i=0;i<n;i++)
     15         {
     16             scanf("%s",a[i]);
     17         }
     18         q=0;w=t-1;
     19         ans=1;
     20         map[0][t-1]=1;
     21         e=0;
     22         for(i=0;i<=n*m;i++)
     23         {
     24             if(a[q][w]=='N')
     25             {
     26                 q--;
     27                 if(q<0||q>=n)
     28                 {
     29                     e=1;
     30                     break;
     31                 }
     32                 else
     33                 {
     34                     if(map[q][w]==0)
     35                     map[q][w]=++ans;
     36                     else
     37                     {
     38                         an=map[q][w];
     39                         break;
     40                     }
     41                 }
     42             }
     43             else if(a[q][w]=='S')
     44             {
     45                 q++;
     46                 if(q<0||q>=n)
     47                 {
     48                     e=1;
     49                     break;
     50                 }
     51                 else
     52                 {
     53                     if(map[q][w]==0)
     54                     map[q][w]=++ans;
     55                     else
     56                     {
     57                         an=map[q][w];
     58                         break;
     59                     }
     60                 }
     61             }
     62             else if(a[q][w]=='E')
     63             {
     64                 w++;
     65                 if(w<0||w>=m)
     66                 {
     67                     e=1;
     68                     break;
     69                 }
     70                 else
     71                 {
     72                     if(map[q][w]==0)
     73                     map[q][w]=++ans;
     74                     else
     75                     {
     76                         an=map[q][w];
     77                         break;
     78                     }
     79                 }
     80             }
     81             else if(a[q][w]=='W')
     82             {
     83                 w--;
     84                 if(w<0||w>=m)
     85                 {
     86                     e=1;
     87                     break;
     88                 }
     89                 else
     90                 {
     91                     if(map[q][w]==0)
     92                     map[q][w]=++ans;
     93                     else
     94                     {
     95                         an=map[q][w];
     96                         break;
     97                     }
     98                 }
     99             }
    100         }
    101         if(e==1)
    102         {
    103             printf("%d step(s) to exit
    ",ans);
    104         }
    105         else
    106         {
    107             printf("%d step(s) before a loop of %d step(s)
    ",an-1,ans-an+1);
    108         }
    109     }
    110 }
    View Code
  • 相关阅读:
    Ubuntu JDK 安装及环境配置
    流式计算之Storm简介
    Amcharts 提示 字体找不到解决方法
    Amcharts 入门教程
    JavaMail 发送邮件简单 Demo
    JavaMail 发送邮件,以及sina、163、QQ服务器不同的解析结果(附图)
    MyEclipse 搭建 hadoop 环境
    淘宝主搜索体验
    【转】Net中VSS实现版本控制管理的一些使用方法
    IIS配置PHP环境(快速最新版)
  • 原文地址:https://www.cnblogs.com/CrazyBaby/p/5687566.html
Copyright © 2011-2022 走看看