zoukankan      html  css  js  c++  java
  • POJ 1573 Robot Motion

    提交一次就accept了,

    唯一的瑕疵是又调试了,因为自己的逻辑不清楚,导致sign数组的赋值与函数调用的关系没弄清楚。

    应该从第一次调用时就开始考虑所有数据,而不是从下一次着眼,想当然了。。。

    View Code
      1 #include<iostream>
    2 #include<cstring>
    3 #include<cstdio>
    4
    5 #define ONLINE
    6
    7 using namespace std;
    8
    9 int column,row,begin;
    10 int sign[11][11];
    11 char map[11][11];
    12 int steps;
    13
    14 void online()
    15 {
    16 #ifdef ONLINE
    17 #else
    18 freopen("F:\\t1.txt","r",stdin);
    19 freopen("F:\\t2.txt","w",stdout);
    20 #endif
    21 }
    22
    23 bool bound(int x,int y)
    24 {
    25 if(x<1||x>row||y<1||y>column)
    26 {
    27 cout<<steps<<" step(s) to exit"<<endl;
    28 return true;
    29 }
    30 return false;
    31 }
    32
    33 void imitate(int x,int y)
    34 {
    35 if(sign[x][y]!=0)
    36 {
    37 cout<<sign[x][y]-1<<" step(s) before a loop of "<<steps-sign[x][y]+1<<" step(s)"<<endl;
    38 return ;
    39 }
    40 sign[x][y]=++steps;
    41 if(map[x][y]=='N')
    42 {
    43 int m=x-1,n=y;
    44 if(!bound(m,n))
    45 {
    46
    47 imitate(m,n);
    48 // sign[m][n]=++steps;
    49 }
    50 }
    51 else if(map[x][y]=='E')
    52 {
    53 int m=x,n=y+1;
    54 if(!bound(m,n))
    55 {
    56
    57 imitate(m,n);
    58 // sign[m][n]=++steps;
    59 }
    60 }
    61 else if(map[x][y]=='S')
    62 {
    63 int m=x+1,n=y;
    64 if(!bound(m,n))
    65 {
    66
    67 imitate(m,n);
    68 // sign[m][n]=++steps;
    69 }
    70 }
    71 else if(map[x][y]=='W')
    72 {
    73 int m=x,n=y-1;
    74 if(!bound(m,n))
    75 {
    76
    77 imitate(m,n);
    78 // sign[m][n]=++steps;
    79 }
    80 }
    81 }
    82
    83 void init()
    84 {
    85 cin>>row>>column>>begin;
    86 while(column!=0||row!=0||begin!=0)
    87 {
    88 steps=0;
    89 memset(sign,0,sizeof(sign));
    90 memset(map,'0',sizeof(map));
    91 for(int i=1;i<=row;i++)
    92 for(int j=1;j<=column;j++)
    93 {
    94 cin>>map[i][j];
    95 }
    96 imitate(1,begin);
    97 cin>>row>>column>>begin;
    98 }
    99 }
    100
    101
    102
    103 int main()
    104 {
    105 online();
    106 init();
    107 return 0;
    108 }

  • 相关阅读:
    ios开发-2015-07-19
    ios开发-2015-07-18
    ios开发-2015-07-17
    ios开发-2015-07-16
    ios开发-2015-07-15
    ios开发-2015-07-14
    ios开发-2015-07-13
    Selenium源码分析之WebDriver
    webdriver实现原理 分类: Selenium 2015-07-16 00:16 11人阅读 评论(0) 收藏
    webdriver实现原理
  • 原文地址:https://www.cnblogs.com/YipWingTim/p/2219782.html
Copyright © 2011-2022 走看看