8465:马走日

news/2025/9/20 21:07:12/文章来源:https://www.cnblogs.com/1a2s/p/19102845

题目

总时间限制: 1000ms 内存限制: 65536kB

描述

马在中国象棋以日字形规则移动。

请编写一段程序,给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点。

输入

第一行为整数T(T < 10),表示测试数据组数。
每一组测试数据包含一行,为四个整数,分别为棋盘的大小以及初始位置坐标n,m,x,y。(0<=x<=n-1,0<=y<=m-1, m < 10, n < 10)

输出

每组测试数据包含一行,为一个整数,表示马能遍历棋盘的途径总数,0为无法遍历一次。

样例输入

1
5 4 0 0

样例输出

32

题意

输入测试数据组数和测试数据(坐标),输出马能遍历棋盘的途径总数。

思路

这是一个用深度优先搜索和递归法解决问题。从马的初始位置开始,通过递归尝试所有8种可能的日字形移动方向,每次移动时检查目标位置是否在棋盘范围内且未被访问过。当成功访问所有格子时计数增加,通过回溯机制取消已访问标记来探索其他路径,最终统计所有可能的完整遍历路径总数。

代码

#include<bits/stdc++.h>
using namespace std;
int t,n,m,x,y,ans=0;
bool c[100][100];//访问标记数组
void d(int a,int b,int sum){//DFS函数
if(sum==n*m){//终止条件:访问完所有格子
ans++;//找到一条完整路径
return;
}
int x1[8]={-2,-2,-1,-1,1,1,2,2};//8个方向的行偏移
int y1[8]={-1,1,-2,2,-2,2,-1,1};//8个方向的列偏移
for(int i=0;i<8;i++){//尝试所有8个方向
int x2=a+x1[i],y2=b+y1[i];//计算新位置
if(x2>=0&&x2<n&&y2>=0&&y2<m&&c[x2][y2]==0){//检查是否在棋盘内且未访问c[x2][y2]=true;//标记为已访问d(x2,y2,sum+1);//递归搜索c[x2][y2]=false;//回溯:取消标记}}
}
int main(){
cin>>t;//读取测试用例数
for(int i=1;i<=t;i++){
cin>>n>>m>>x>>y;//读取棋盘大小和初始位置
for(int i=0;i<n;i++){//初始化访问数组for(int j=0;j<m;j++){c[i][j]=false;}}ans=0;//重置计数器c[x][y]=true;//标记起始位置d(x,y,1);//开始搜索cout<<ans<<endl;//输出结果}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/908542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

性能调优之NUMA调优

什么是NUMA NUMA(Non-Uniform Memory Access,非统一内存访问)是一种用于多处理器系统的内存设计架构。在NUMA系统中,每个处理器(或一组处理器)拥有自己的本地内存,处理器访问本地内存的速度比访问其他处理器的内…

深入解析:SpringMVC静态资源与Servlet容器指南

深入解析:SpringMVC静态资源与Servlet容器指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

CCPC Online 2025 游寄

CCPC Online 2025 游寄 赛时 随机 roll 题,先 roll 到 \(K\) 然后没看懂,又 roll 到 \(E\) 谁家好人上来就把两道签到题就 roll 完了() 和队友讨论了一下 \(E\),发现很简单,队友推了个式子过了 回头一看,发现自…

CentOS 7 容器时遇到了 yum update 报错

CentOS 7 容器时遇到了 yum update 报错你在 CentOS 容器中执行 yum update -y 时遇到的错误, ` Loaded plugins: fastestmirror, ovl Determining fastest mirrors Could not retrieve mirrorlist http://mirrorlist…

MIT新论文:数据即上限,扩散模型的关键能力来自图像统计规律,而非复杂架构

现在的文生图模型已经十分强大了,例如我们在输入框敲下 “a photorealistic astronaut riding a horse on the moon”,几秒钟后屏幕生成从未出现过的图像,细节丰富,几近完美。扩散模型(diffusion models)推动了这…

实用指南:光学神经网络与人工智能应用

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Zabbix 企业级监控架构实战指南:从搭建、可视化到智能告警

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

基于MATLAB的视频动态目标跟踪检测搭建方案

基于MATLAB的视频动态目标跟踪检测搭建方案pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

第三篇:Windows10/11软件集成与系统优化 - 教程

第三篇:Windows10/11软件集成与系统优化 - 教程2025-09-20 20:21 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display…

U522155 数据生成(小心电脑)

// code by 樓影沫瞬_Hz17 #include <bits/stdc++.h> using namespace std;#define getc() getchar_unlocked() #define putc(a) putchar_unlocked(a) #define en_ putc(\n) #define e_ putc( )using pii = pair…

Windows-Appx

Windows-Appx导航 (返回顶部)1. PS_modules 2. Appx 3. Get-AppxPackage3.1 Syntax 语法 3.2 Description 描述 3.3 Examples 3.4 Parameters 参数4. Remove-AppxPackage4.1 Syntax 4.2 Description 4.3 Parameters5. …

实用指南:OSG中osgFX库

实用指南:OSG中osgFX库pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &qu…

2025.9.20——1橙

终于结束初赛,可以好好写写编程题了。 普及- P10108 [GESP202312 六级] 闯关游戏 很简单的一道dp题,但我因为没考虑到答案可能是负数,卡了好几次。

CSP 2025 游记

前言 被迫报了 J 组,不好评价。 初赛 J 组 上午坐大巴在车上睡着了,然后正好在考点门口被颠醒了…… 提前半个小时到了考点,又在桌子上趴了一会,不过没睡着。两个监考老师左右脑互搏,至今不知道准考证号前四位要填…

配置Spring框架以连接SQL Server数据库

Spring框架是一个开源的企业级应用框架,用于简化Java开发工作,通过依赖注入(DI)和面向切面编程(AOP)等核心功能支持程序的健壮性和易维护性。要配置Spring框架以连接SQL Server数据库,需要遵循几个关键步骤,从…

这一辈子大多数日子是无聊的

本文纯属个人观点,搏您一笑,请勿上升至道德高度今天晚上去食堂吃饭的路上拍下了这张照片(图一):密密麻麻的不知道什么植物,如同校园里的学生一样多,它们占领了照片的下部。岸边的树、教学楼,乃至于远方的天空,天…

Elasticsearch面试精讲 Day 11:索引模板与动态映射 - 指南

Elasticsearch面试精讲 Day 11:索引模板与动态映射 - 指南2025-09-20 19:44 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !importan…

Go 实现验证码识别

步骤 1:安装 Go 语言 首先,确保你的系统已经安装了 Go 语言。如果没有安装,可以从 Go 官网 下载并安装。 安装后,验证是否成功: 更多内容访问ttocr.com或联系1436423940 go version 步骤 2:安装 Tesseract OCR 我…

跳出 AI 编程的「兔子洞」,4 个实战策略帮你解决90%的死循环

在和 AI 协作编程的时候,你肯定遇到过这样一种情况: 使用 Claude Code 或者 Codex 信心满满的实现一个功能之后,结果你一运行,直接报错。 于是你把错误信息直接复制粘贴回给 AI,它态度好的一笔,立马道歉:非常抱…

用 PHP 和 Tesseract OCR 识别英文数字验证码

验证码是网页中常见的防止自动化攻击的工具,通常它们由一串字母和数字组成,目的是确认用户是人类而不是机器人。很多情况下,验证码都是扭曲、加噪音的图像,这让计算机很难直接读取。幸运的是,借助 OCR(Optical C…