zoukankan      html  css  js  c++  java
  • 中国象棋 Learner

     

    样例输入:
    .#....#S#
    ..#.#.#..
    ..##.#..#
    ......##.
    ...T.....
    ...#.#...
    ...#.....
    ...###...
    .........
    .##......
    输出:Yes
     1 #include<iostream>
     2 #include<cstring>
     3 using namespace std;
     4 int m=9,n=10;
     5 int beginx,beginy;
     6 //方向可用一维数组表示,也可以用二维数数组表示,对于表格形式
     7 int dir[8][2] = {{-2,-1},{-2,1},{-1,-2},{-1,2},{1,-2},{1,+2},{2,-1},{2,1}};
     8 int total;
     9 bool mark[10][9];//表格是否走过
    10 char map[10][9];//map 记录的是该表
    11 bool check(int x,int y)
    12 {
    13     if (map[x][y]=='#')
    14         return false;
    15     if(x<n&&y<m&&x>=0&&y>=0)
    16         return true;//判断是否越界
    17     else
    18         return false;
    19 }
    20 void dfs(int r,int c)
    21 {
    22     for(int i=0;i<8;i++)
    23     //往下一层走的条件是(1)该点没有越界  (2)该点没有走过 (3)是否可走
    24         if(check(r+dir[i][0],c+dir[i][1])&&!mark[r+dir[i][0]][c+dir[i][1]])
    25         {
    26             if (map[r+dir[i][0]][c+dir[i][1]]=='.')
    27             {
    28                 r+=dir[i][0];
    29                 c+=dir[i][1];
    30                 mark[r][c]=1;//该点走过了
    31                 dfs(r,c);
    32                 r-=dir[i][0];
    33                 c-=dir[i][1];
    34             }
    35             //找到终点,退出,
    36             if(map[r+dir[i][0]][c+dir[i][1]]=='T'){
    37                 //total++可以用来计算有多少种方法到达该点
    38                 cout<<"yes"<<endl;
    39                 //测试代码,证明找到了
    40                 // cout<<"r+dir[i][0]=  "<<r+dir[i][0]<<"c+dir[i][1]"<<c+dir[i][1]<<endl;
    41                 //exit(0)用于剪枝函数
    42                 exit(0);
    43             }
    44         }
    45 }
    46 int main()
    47 {
    48     memset(mark,0,sizeof(mark));//置标记,刚开始所有的点没有走过
    49     total=0;
    50     for(int i=0;i<n;i++)
    51     {
    52         cin>>map[i];
    53         for(int j=0;j<m;j++)
    54             if(map[i][j]=='S'){beginx=i;beginy=j;}
    55     }
    56     dfs(beginx,beginy);
    57 }

     

    因上求缘,果上努力~~~~ 作者:Learner-,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/12670856.html

  • 相关阅读:
    05
    04
    03
    02
    01
    drf 频率类
    drf 视图家族
    drf 之 群改,单改接口
    drf 序列化
    drf 之模块
  • 原文地址:https://www.cnblogs.com/BlairGrowing/p/12670856.html
Copyright © 2011-2022 走看看