acwing 188 武士风度的牛

简介: acwing 188 武士风度的牛

武士风度的牛 - AcWing题库

#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
 
using namespace std ;
const int N = 200 ;
char g[N][N] ;
int n , m ;
int fx,fy ; 
int hx,hy ;
struct node{
  int x , y ;
  node(int xx ,int yy){
    x = xx , y = yy ;
  }
};
int d[8][2]= {{-2,1},{-1,2},{1,2},{2,1},{2,-1},{1,-2},{-1,-2},{-2,-1}};
queue<node> q ;
int dis[N][N] ;
void bfs(){
  q.push(node(fx,fy)) ;
  dis[fx][fy] = 0 ;
  while(!q.empty()){
    node now = q.front() ;
    q.pop() ;
    int x = now.x , y = now.y ;
    if(x == hx && y == hy) return ;
    for(int i = 0 ; i < 8 ; i ++){
      int tx = x + d[i][0] , ty = y + d[i][1] ;
      if(tx<0||tx>=n||ty<0||ty>=m||dis[tx][ty]!=-1||g[tx][ty] == '*') continue ;
      q.push(node(tx,ty)) ;
      dis[tx][ty] = dis[x][y] + 1 ;
    }
  }
}
int main(){
  cin >> m >> n ;
  memset(dis,-1,sizeof(dis)) ;
  for(int i = 0 ; i < n ;i ++){
    for(int j = 0 ; j < m ;j ++){
      cin >> g[i][j] ;
      if(g[i][j] == 'K') fx = i , fy = j ;
      if(g[i][j] == 'H') hx = i , hy = j ;
    }
  }
  bfs() ;
  cout << dis[hx][hy] << endl ;
}
目录
打赏
0
0
0
0
24
分享
相关文章
|
9月前
lanqiaoOJ 563 采药
lanqiaoOJ 563 采药
41 6
|
9月前
lanqiaoOJ 1456 括号序列
lanqiaoOJ 1456 括号序列
80 5
|
9月前
lanqiaoOJ 2110 积木画
lanqiaoOJ 2110 积木画
40 1
|
9月前
lanqiaoOJ 2148 数组切分
lanqiaoOJ 2148 数组切分
52 1
【C++】日期类Date(详解)②
- `-=`通过复用`+=`实现,`Date operator-(int day)`则通过创建副本并调用`-=`。 - 前置`++`和后置`++`同样使用重载,类似地,前置`--`和后置`--`也复用了`+=`和`-=1`。 - 比较运算符重载如`&gt;`, `==`, `&lt;`, `&lt;=`, `!=`,通常只需实现两个,其他可通过复合逻辑得出。 - `Date`减`Date`返回天数,通过迭代较小日期直到与较大日期相等,记录步数和符号。 ``` 这是236个字符的摘要,符合240字符以内的要求,涵盖了日期类中运算符重载的主要实现。
|
9月前
acwing 1113 红与黑
acwing 1113 红与黑
46 0
|
9月前
acwing 1112 迷宫
acwing 1112 迷宫
51 0
|
9月前
acwing 1107 魔板
acwing 1107 魔板
38 0
|
9月前
acwing 110 抓住那头牛
acwing 110 抓住那头牛
37 0
|
9月前
acwing 1097 池塘计数
acwing 1097 池塘计数
59 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等