C++ 骑士移动—马走日问题(补充malloc函数的用法)

本文通过编程解决象棋中马从起始位置到目标位置的最短移动步数问题,涉及图论算法。示例中详细介绍了输入输出格式,并给出样例。同时,文章探讨了`queue`的运用以及`malloc`函数在动态内存分配中的应用,讲解了如何使用`memset`清空数组。
摘要由CSDN通过智能技术生成

题目描述
写程序,计算象棋中马从一个位置移动到另一个位置所需的最少移动次数。
输入格式
有多组测试数据。
第一行一个整数 T,代表数据组数。
每组数据包含三行。
第一行表示棋盘的长度 L,棋盘大小为 L×L。
第二行包含两个整数 x, y,表示马的起始位置坐标。
第三行包含两个整数 a, b,表示马的终点位置坐标。
L 最大为 300。
棋盘坐标范围为 [0, …, L-1]。

输出格式
对于每组数据输出一行,包含一个数字,即最少移动次数。
若起点终点相同,则移动次数为 0。
输入样例 复制
3
8
0 0
7 0
100
0 0
30 50
10
1 1
1 1
输出样例 复制
5
28
0
知识总结

  1. queue的使用
  2. malloc函数动态申请连续的某个类型的内存空间
  3. memset清空数组
#include<bits/stdc++.h>
#include<queue>//广度优先 
using namespace std;
int dr[] = {
    1, 2, 2, 1, -1, -2, -2, -1 };//移动操作 
int dc[] = {
    -2, -1, 1, 2, 2, 1, -1, -2 };
int vis[305][305], dis[305][305
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值