1219:马走日

简介: 1219:马走日

1219:马走日

时间限制: 1000 ms         内存限制: 65536 KB

【题目描述】

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

请编写一段程序,给定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

【来源】

No

1. #include<iostream>
2. #include<cstdio>
3. #include<cstring>
4. using namespace std;
5. int sum;
6. int x[8]={1,2,2,1,-1,-2,-2,-1};
7. int y[8]={-2,-1,1,2,2,1,-1,-2};
8. int ss[101][101]={0};
9. int t,m,n,a,b,c;
10. int xx,yy;
11. void dfs(int a,int b,int c)
12. { 
13.   if(c==m*n) sum++;
14.   else {
15.     for(int i=0;i<8;i++){
16.       xx=a+x[i];
17.       yy=b+y[i];
18.       if(xx>=0&&xx<m&&yy>=0&&yy<n&&(ss[xx][yy]==0)){
19.         ss[a][b]=1;
20.         dfs(xx,yy,c+1);
21.         ss[a][b]=0;
22.       }
23.     }
24.   } 
25. }
26. int main()
27. {
28.   cin>>t;
29.   for(int i=1;i<=t;i++){
30.     cin>>m>>n>>a>>b;
31.     sum=0;
32.     dfs(a,b,1);
33.     cout<<sum<<endl;
34.   }
35.   return 0;
36.  }

 


相关文章
|
Python
循环的嵌套
在编程中,循环结构是一种非常重要的控制结构,用于重复执行一段代码。而循环的嵌套则是指在一个循环内部又包含了另一个或多个循环,使得代码的执行更加复杂和灵活。本文将介绍循环嵌套的概念、使用场景以及示例代码。
382 1
就是要你懂负载均衡--lvs和转发模式
> 本文希望阐述清楚LVS的各种转发模式,以及他们的工作流程和优缺点,同时从网络包的流转原理上解释清楚优缺点的来由,并结合阿里云的slb来说明优缺点。 如果对网络包是怎么流转的不太清楚,推荐先看这篇基础:[程序员的网络知识 -- 一个网络包的旅程](https://www.atatech.org/articles/80573) ,对后面理解LVS的各个转发模式非常有帮助。
13820 0
|
6月前
|
算法
104.二叉树的最大深度 , 111.二叉树的最小深度,222.完全二叉树的节点个数
本内容主要讲解了三道与二叉树相关的算法题及其解法,包括“二叉树的最大深度”、“二叉树的最小深度”和“完全二叉树的节点个数”。通过递归方法(前序或后序遍历)实现求解。 - **最大深度**:利用后序遍历计算根节点到最远叶子节点的路径长度。 - **最小深度**:同样采用后序遍历,但需特别处理单子树为空的情况,确保找到从根到最近叶子节点的路径。 - **完全二叉树节点数**:基于递归后序遍历统计左右子树节点数量并累加。 代码示例清晰展示了递归逻辑,帮助理解二叉树深度与高度的概念及其实现方式。
|
8月前
|
关系型数据库 Linux 数据库
2025 年 Odoo 安装与部署全攻略
本文介绍了 Odoo 的手工安装与自动化部署方案。手工安装需完成 Docker 安装、镜像拉取及容器运行,但存在安装复杂、配置困难、管理繁琐等问题。Websoft9 提供了自动化部署方案,通过控制台实现快速创建数据库、初始化环境和后台配置,大幅降低技术门槛,将部署时间从 2 小时缩短至 10 分钟。对比显示,Websoft9 在时间成本、技术要求和稳定性上更具优势,适合中小团队使用,助力企业聚焦业务流程优化。
1815 1
|
9月前
|
存储 算法 C++
【c++丨STL】map/multimap的使用
本文详细介绍了STL关联式容器中的`map`和`multimap`的使用方法。`map`基于红黑树实现,内部元素按键自动升序排列,存储键值对,支持通过键访问或修改值;而`multimap`允许存在重复键。文章从构造函数、迭代器、容量接口、元素访问接口、增删操作到其他操作接口全面解析了`map`的功能,并通过实例演示了如何用`map`统计字符串数组中各元素的出现次数。最后对比了`map`与`set`的区别,强调了`map`在处理键值关系时的优势。
518 73
|
9月前
|
存储 算法 C语言
高精度算法
本文详细介绍了高精度算法的实现,涵盖加法、减法、乘法、除法及取模等操作。通过字符串与数组结合的方式,解决了大数运算中超出数据类型范围的问题。每种运算均提供完整的C++代码示例,包括输入处理、位运算模拟、进位/借位逻辑以及结果输出。其中,高精度加法和减法通过逆序存储数字简化计算;乘法利用双重循环模拟手算过程;除法分为低精度和高精度两种情况,分别采用逐位试商与减法模拟;取模则通过逐位累加求余实现。这些方法为处理大规模数值运算提供了有效工具,适用于竞赛编程与实际开发场景。
395 24
|
11月前
|
算法 C++
【C++数据结构——查找】二叉排序树(头歌实践教学平台习题)【合集】
【数据结构——查找】二叉排序树(头歌实践教学平台习题)【合集】 目录 任务描述 相关知识 测试说明 我的通关代码: 测试结果: 任务描述 本关任务:实现二叉排序树的基本算法。 相关知识 为了完成本关任务,你需要掌握:二叉树的创建、查找和删除算法。具体如下: (1)由关键字序列(4,9,0,1,8,6,3,5,2,7)创建一棵二叉排序树bt并以括号表示法输出。 (2)判断bt是否为一棵二叉排序树。 (3)采用递归方法查找关键字为6的结点,并输出其查找路径。 (4)分别删除bt中关键
312 11
【C++数据结构——查找】二叉排序树(头歌实践教学平台习题)【合集】
|
11月前
|
机器学习/深度学习 存储 C++
【C++数据结构——线性表】单链表的基本运算(头歌实践教学平台习题)【合集】
本内容介绍了单链表的基本运算任务,涵盖线性表的基本概念、初始化、销毁、判定是否为空表、求长度、输出、求元素值、按元素值查找、插入和删除数据元素等操作。通过C++代码示例详细解释了顺序表和链表的实现方法,并提供了测试说明、通 - **任务描述**:实现单链表的基本运算。 - **相关知识**:包括线性表的概念、初始化、销毁、判断空表、求长度、输出、求元素值、查找、插入和删除等操作。 - **测试说明**:平台会对你编写的代码进行测试,提供测试输入和预期输出。 - **通关代码**:给出了完整的C++代码实现。 - **测试结果**:展示了测试通过后的预期输出结果。 开始你的任务吧,祝你成功!
560 5
|
存储 C语言
C语言中a 和&a 有什么区别
在C语言中,&quot;a&quot; 是一个变量的名字,代表存储在内存中的某个值。而&quot;&a&quot; 则是获取该变量的内存地址,即变量a在计算机内存中的具体位置。这两者的主要区别在于:&quot;a&quot; 操作的是变量中的值,&quot;&a&quot; 操作的是变量的内存地址。
2049 23
|
存储 算法 C语言
【C/C++ 数据结构 树】探索C/C++中的二叉树:从理论到实践
【C/C++ 数据结构 树】探索C/C++中的二叉树:从理论到实践
362 0