当前位置:网站首页>First week of July
First week of July
2022-07-07 23:25:00 【zjsru_ Beginner】
The knight moves
Title Description : Write program , Calculate the minimum number of times the knight needs to move from one position to another . The rules of Knight movement are as follows .

Every beat , There are eight choices , After many correct choices, you can find a nearest journey .
Algorithm design :
This is a problem of finding the shortest distance , have access to queue Perform breadth first search steps , Now put the starting point in the queue , If the queue is not empty , Then the right head out of the right , Otherwise, expand 8 A direction , If you find a target , Then the step size is returned immediately +1 And put it in the queue , Mark it as visited , If the knight's current position is (x,y), Then the current position coordinate plus the offset when moving .
Input :
3
8
0 0
7 0
100
0 0
30 50
10
1 1
1 1
Output :
5
28
0
Code :
#include<bits/stdc++.h>
int size ;
struct status{ # Structure
int x;
int y;
int step;
}q[100006];
int vec[8][2]={
{-2,-1},{-1,-2},{-2,1},{-1,2},{2,-1},{1,-2},{2,1},{1,2}}; # Direction
int is[333][333];
void bfs(int sx,int sy,int ex,int ey){ # Breadth first search
int head =0,tail=0;
memset(is,0,sizeof(is));
q[tail].x=sx;
q[tail].y=sy;
is[sx][sy]=1;
tail++;
while (head<tail){
if (q[head].x==ex&&q[head].y==ey){
printf("%d\n",q[head].step);
break ;
}
for(int i=0;i<8;i++){ # Traverse all directions
int nx=q[head].x+vec[i][0];
int ny=q[head].y+vec[i][1];
int step=q[head].step;
if (nx>=0&&nx<size&&ny>=0&&ny<size&&is[nx][ny]==0){
q[tail].x=nx;
q[tail].y=ny;
q[tail].step=step+1;
is[nx][ny]=1;
tail++;
}
}
head ++;
}
}
int main(){
int k;
scanf("%d",&k);
int sx,sy,ex,ey;
while (k--){ # Traverse each target to achieve the shortest distance
scanf("%d",&size);
scanf("%d%d%d%d",&sx,&sy,&ex,&ey);
bfs(sx,sy,ex,ey);
}
return 0;
}
YJG
边栏推荐
- Gee (III): calculate the correlation coefficient between two bands and the corresponding p value
- Wechat forum exchange applet system graduation design completion (6) opening defense ppt
- USB (十八)2022-04-17
- Network security sqlmap and DVWA explosion
- Two kinds of curves in embedded audio development
- 云原生数据仓库AnalyticDB MySQL版用户手册
- LeeCode -- 6. Z 字形变换
- 欢聚时代一面
- Force deduction solution summary 648 word replacement
- Wechat forum exchange applet system graduation design (3) background function
猜你喜欢

LDO voltage stabilizing chip - internal block diagram and selection parameters

Matlab SEIR infectious disease model prediction

高效的S2B2C电商系统,是这样帮助电子材料企业提升应变能力的

产业共融新势能,城链科技数字峰会厦门站成功举办

USB(十五)2022-04-14

Wechat forum exchange applet system graduation design (2) applet function

Wechat forum exchange applet system graduation design completion (4) opening report

生鲜行业数字化采购管理系统:助力生鲜企业解决采购难题,全程线上化采购执行

Spark 离线开发框架设计与实现

聊聊支付流程的设计与实现逻辑
随机推荐
Matlab SEIR infectious disease model prediction
Unity3D学习笔记5——创建子Mesh
Matlab-SEIR传染病模型预测
Network security - joint query injection
Install a new version of idea. Double click it to open it
13、 System optimization
Happy gathering time
Unity3d learning notes 4 - create mesh advanced interface
PCB wiring rules of PCI Express interface
[microservices SCG] gateway integration Sentinel
LeeCode -- 6. Z 字形变换
Illegal behavior analysis 1
When copying something from the USB flash disk, an error volume error is reported. Please run CHKDSK
ArcGIS: field assignment_ The attribute table field calculator assigns values to fields based on conditions
高效的S2B2C电商系统,是这样帮助电子材料企业提升应变能力的
USB(十六)2022-04-28
windows设置redis开启自动启动
Unity3d Learning Notes 6 - GPU instantiation (1)
ArcGIS: two methods of attribute fusion of the same field of vector elements
Ros2 topic (03): the difference between ros1 and ros2 [01]