当前位置:网站首页>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
边栏推荐
- Cloud native data warehouse analyticdb MySQL user manual
- 云原生数据仓库AnalyticDB MySQL版用户手册
- MySQL Index Optimization Practice I
- PMP project management exam pass Formula-1
- Count the top 10 films at the box office and save them in another file
- Solution: prompt "unsupported video format" when inserting avi format video into the message
- Dynamics 365 查找字段过滤
- Why does the market need low code?
- Tree background data storage (using webmethod) [easy to understand]
- Caip2021 preliminary VP
猜你喜欢

MySQL Index Optimization Practice I

Unity3d learning notes 5 - create sub mesh

LDO稳压芯片-内部框图及选型参数

Explain

Technology at home and abroad people "see" the future of audio and video technology

JS get the key and value of the object

MySQL Index Optimization Practice II

城联优品作为新力量初注入,相关上市公司股价应声上涨150%

Wechat forum exchange applet system graduation design completion (6) opening defense ppt

产业共融新势能,城链科技数字峰会厦门站成功举办
随机推荐
Installing spss25
Oracle database backup and recovery
FreeLink开源呼叫中心设计思想
Network security - joint query injection
Network security - Eternal Blue
Description of longitude and latitude PLT file format
Inftnews | the wide application of NFT technology and its existing problems
三问TDM
LDO稳压芯片-内部框图及选型参数
【编译原理】词法分析设计实现
树后台数据存储(採用webmethod)[通俗易懂]
Archlinux install MySQL
JS get the key and value of the object
Wechat forum exchange applet system graduation design completion (7) Interim inspection report
How to generate unique file names
系统架构设计师备考经验分享:论文出题方向
Grid
解决:信息中插入avi格式的视频时,提示“unsupported video format”
产业共融新势能,城链科技数字峰会厦门站成功举办
Wechat forum exchange applet system graduation design (2) applet function