• poj3009


      1 #include <iostream>
      2 
      3 using namespace std;
      4 
      5 int w, h; 
      6 int MAP[41][41];
      7 int sx, sy, ex, ey;
      8 int res;
      9 int dx[4] = {
     10     1, -1, 0, 0
     11 };
     12 int dy[4] = {
     13     0, 0, 1, -1
     14 }; 
     15 
     16 int runing(int &x, int &y, int dir)
     17 {
     18     for(;;)
     19     {
     20         int nx = x + dx[dir];
     21         int ny = y + dy[dir];
     22         if(nx >= 0 && nx < w && ny >= 0 && ny < h)
     23         {
     24             if(MAP[ny][nx] == 1)
     25             {
     26                 return 1;
     27             }
     28             else if(nx == ex && ny == ey)
     29             {
     30                 return 0;
     31             }
     32         }
     33         else
     34         {
     35             return -1;
     36         }
     37         x = nx;
     38         y = ny;
     39     }
     40 }
     41 
     42 void dfs(int x, int y, int sum)
     43 {
     44     int nx, ny;
     45     //´óÓÚ10£¬¼ôÖ¦ 
     46     if(sum > 10)
     47         return ;
     48 
     49 
     50     //Ëĸö·½Ïò½øÐÐËÑÑ° 
     51     for(int i = 0; i < 4; ++i)
     52     {
     53         nx = x + dx[i];
     54         ny = y + dy[i];
     55         if(nx >= 0 && nx < w && ny >= 0 && ny < h)
     56         {
     57             if(MAP[ny][nx] == 1)
     58             {
     59                 continue;
     60             }
     61         }
     62         else
     63             continue;
     64         nx = x; ny = y;
     65         int temp = runing(nx, ny, i);
     66         //ÍùÕâ¸ö·½ÏòÅöµ½µÄÊÇǽ 
     67         if(temp == 1)
     68         {
     69             MAP[ny+dy[i]][nx+dx[i]] = 0;
     70             dfs(nx, ny, sum+1);
     71             MAP[ny+dy[i]][nx+dx[i]] = 1;
     72             
     73         }
     74         //ÍùÕâ¸ö·½Ïò³ö½çÁË 
     75         else if(temp == -1)
     76         {
     77             continue;
     78         }
     79         //ÍùÕâ¸ö·½Ïòµ½´ïÁËÖÕµã 
     80         else if(temp == 0)
     81         {
     82              if(res > sum)
     83                  res = sum;
     84         }
     85     }
     86     
     87 } 
     88 
     89 void solver()
     90 {
     91     res = 11;
     92     dfs(sx, sy, 1);
     93     
     94 }
     95 int main()
     96 {
     97     while(cin >> w >> h)
     98     {
     99         if(w == 0 && h == 0)
    100             break;
    101         //input
    102         for(int i = 0; i < h; ++i)
    103         {
    104             for(int j = 0; j < w; ++j)
    105             {
    106                 cin >> MAP[i][j];
    107                 if(MAP[i][j] == 2)
    108                 {
    109                     sx = j;
    110                     sy = i;
    111                 }
    112                 if(MAP[i][j] == 3)
    113                 {
    114                     ex = j;
    115                     ey = i;    
    116                 }
    117             } 
    118         }
    119         //solver
    120         solver();
    121         //output 
    122         if(res > 10)
    123             cout << -1 << endl;
    124         else
    125             cout << res << endl; 
    126     } 
    127     
    128     return 0;
    129 } 
    View Code
  • 相关阅读:
    <自动化测试方案_5>第五章、代码单元自动化测试
    <自动化测试方案_4>第四章、选型标准
    <自动化测试方案_3>第三章、怎么样实现自动化测试?(How)
    Jmeter Beanshell 用法
    Jmeter调用自定义jar包
    JMeter中文返回乱码
    项目如何提测?
    JMeter 接口测试基础
    JMeter接口测试_参数化
    mac /linux vi/vim永久显示行号开启高亮模式
  • 原文地址:https://www.cnblogs.com/shuanghong/p/4077659.html
Copyright © 2020-2023  润新知