当前位置:网站首页>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
边栏推荐
- 欢聚时代一面
- 树后台数据存储(採用webmethod)[通俗易懂]
- POJ2392 SpaceElevator [DP]
- sql 数据库执行问题
- 高效的S2B2C电商系统,是这样帮助电子材料企业提升应变能力的
- Grid
- Wechat forum exchange applet system graduation design (5) assignment
- The 19th Zhejiang Provincial Collegiate Programming Contest VP记录+补题
- [microservices SCG] gateway integration Sentinel
- js 获取对象的key和value
猜你喜欢
Spark 离线开发框架设计与实现
【编译原理】词法分析设计实现
Specific method example of V20 frequency converter manual automatic switching (local remote switching)
云原生正在吞噬一切,开发者该如何应对?
Inftnews | the wide application of NFT technology and its existing problems
Wechat forum exchange applet system graduation design completion (8) graduation design thesis template
Binary tree
Gee (IV): calculate the correlation between two variables (images) and draw a scatter diagram
Explain
Unity3D学习笔记6——GPU实例化(1)
随机推荐
2022第六季完美童模陕西总决赛圆满落幕
PCI-Express接口的PCB布线规则
UE4_UE5蓝图command节点的使用(开启关闭屏幕响应-log-发布全屏显示)
Adrnoid开发系列(二十五):使用AlertDialog创建各种类型的对话框
Wechat forum exchange applet system graduation design (2) applet function
Deep understanding of MySQL lock and transaction isolation level
违法行为分析1
Unity3D学习笔记4——创建Mesh高级接口
FPGA基础篇目录
Experience sharing of system architecture designers in preparing for the exam: the direction of paper writing
Spark 离线开发框架设计与实现
Network security -beef
CAIP2021 初赛VP
Network security - Eternal Blue
PMP project management exam pass Formula-1
Cloud native is devouring everything. How should developers deal with it?
七月第一周
在软件工程领域,搞科研的这十年!
MySQL Index Optimization Practice II
系统设计概述