马的走法

描述

在一个4X5的棋盘上,马的起始位置坐标(纵、横)位置由键盘输入,求马能返回初始位置的所有不同走法的总数(马走过的位置不能重复,马走“日”字)。

输入

输入文件第一行为测试用例的个数N,接下来N行,每行两个正整数x,y(1<=x<=5,1<=y<=6),表示马的位置坐标.

输出

每个测试用例的输出占一行,输出马能返回初始位置的所有不同走法的总数,如果没有,则输出“ERROR”(不包含双引号)。

样例输入

3
2 2
1 1
4 6

样例输出

4596
1508
ERROR

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 using namespace std;
 5 int m, n;
 6 int dx[]={1,1,-1,-1,2,2,-2,-2};
 7 int dy[]={2,-2,2,-2,1,-1,1,-1};
 8 int map[5][6];
 9 int sx, sy, step;
10
11 void dfs(int x,int y)
12 {
13     int xx, yy, i;
14     for(i = 0; i < 8; i++)
15     {
16         xx = x + dx[i];
17         yy = y + dy[i];
18         if(xx>=0 && yy>=0 && xx<4 && yy<5 && map[xx][yy] ==0)
19         {
20             map[xx][yy] = 1;
21             dfs(xx,yy);
22             map[xx][yy] = 0;
23         }
24         if(xx+1==sx&&yy+1==sy)
25             step++;
26     }
27 }
28
29 int main()
30 {
31           int n;
32           while(cin>>n)
33           {
34               while(n--)
35               {
36                   cin>>sx>>sy;
37                   if(sx<1 || sx>4 || sy<1 || sy>5)
38                   {
39                       printf("ERROR\n");
40                       continue;
41                   }
42                   memset(map, 0, sizeof map);
43                   step = 0;
44                   map[sx-1][sy-1] = 1;
45                   dfs(sx-1,sy-1);
46                   printf("%d\n",step);
47               }
48           }
49           return 0;
50 }
时间: 2024-10-22 10:42:11

马的走法的相关文章

sicily 1153. 马的周游问题

一.题目描述 在一个8 * 8的棋盘中的某个位置有一只马,如果它走29步正好经过除起点外的其他位置各一次,这样一种走法则称马的周游路线,试设计一个算法,从给定的起点出发,找出它的一条周游路线. 为了便于表示一个棋盘,我们按照从上到下,从左到右对棋盘的方格编号,如下所示: 1     2     3       4     5     6       7     8 9     10       11    12       13    14       15    16 17    18    

sicily 1152 简单马周游 深度优先搜索及回溯算法

1152. 简单的马周游问题 Constraints Time Limit: 1 secs, Memory Limit: 32 MB , Special Judge Description 在一个5 * 6的棋盘中的某个位置有一只马,如果它走29步正好经过除起点外的其他位置各一次,这样一种走法则称马的周游路线,试设计一个算法,从给定的起点出发,找出它的一条周游路线. 为了便于表示一个棋盘,我们按照从上到下,从左到右对棋盘的方格编号,如下所示: 1     2     3       4    

F: Horse Pro 马走棋盘 BFS

F: Horse Pro 豆豆也已经开始学着玩象棋了,现在豆豆已经搞清楚马的走法了,但是豆豆不能确定能否在 100 步以内从一个点到达另一个点(假设棋盘无限大). Input 第一行输入两个整数 x1,y1 表示当前马所在的位置. 第二行输入两个整数 x2,y2 表示豆豆想把马走在的位置. −10000≤x1,x2,y1,y2≤10000 Output 如果能够在100步以内(包括100步)从(x1,y1) 到达 (x2,y2) 则输出到达所需要的最小步数,否则输出 −1 Sample Inpu

一本通1219 马走日

[题目描述] 马在中国象棋以日字形规则移动. 请编写一段程序,给定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.棋盘和棋子的绘制 2.按照象棋规则对棋子进行布局   3.鼠标响应 : 在对弈中,棋子是必须可以移动的,不然游戏无法进行.因此,鼠标左键点击是必不可少的一部分. 4.棋子的功能分析:  中国象棋中各色的象棋棋子的功能使象棋具有了真正的趣味性,中国象棋的棋子的类型大致分为:帅(将).士.象.马.车.炮.兵(卒)等几个类型.  帅(将):红方中的帅和黑方中的将的功能相同,都是只能在九宫格中进行横向和竖向的移动,每次移动一格,并且不能移动超出九宫格,帅和将不能见面.  士:士在整片棋盘

团队-团队编程项目中国象棋-需求分析

需求分析: 1.棋盘和棋子的绘制 2.按照象棋规则对棋子进行布局   3.鼠标响应 : 在对弈中,棋子是必须可以移动的,不然游戏无法进行.因此,鼠标左键点击是必不可少的一部分. 4.棋子的功能分析:  中国象棋中各色的象棋棋子的功能使象棋具有了真正的趣味性,中国象棋的棋子的类型大致分为:帅(将).士.象.马.车.炮.兵(卒)等几个类型.  帅(将):红方中的帅和黑方中的将的功能相同,都是只能在九宫格中进行横向和竖向的移动,每次移动一格,并且不能移动超出九宫格,帅和将不能见面.  士:士在整片棋盘

Python----DFS---骑士周游问题

这篇文章将会将一个数据结构与算法中一个很经典很重要的概念--深度优先搜索(Depth-First-Search:DFS).........(你他喵不是在标题里说了吗?) 好吧,DFS的精髓我其实也还没有弄的特别懂,估计得多用用才能理解更深吧. !!!敲黑板!!!DFS的关键是递归,递归是真好用!!! 深度优先搜索(DFS) 什么是DFS呢,秉着能动手就绝不吵吵的原则,直接给出网上大神的博文链接:http://www.cnblogs.com/skywang12345/p/3711483.html

TYVJ 1074 武士风度的牛(BFS)

背景 Background 农民John有很多牛,他想交易其中一头被Don称为The Knight的牛.这头牛有一个独一无二的超能力,在农场里像Knight一样地跳(就是我们熟悉的象棋中马的走法).虽然这头神奇的牛不能跳到树上和石头上,但是它可以在牧场上随意跳,我们把牧场用一个x,y的坐标图来表示. 描述 Description 这头神奇的牛像其它牛一样喜欢吃草,给你一张地图,上面标注了The Knight的开始位置,树.灌木.石头以及其它障碍的位置,除此之外还有一捆草.现在你的任务是,确定Th

【DFS+回溯】A Knight&#39;s Journey

总时间限制: 1000ms 内存限制: 65536kB 描述 BackgroundThe knight is getting bored of seeing the same black and white squares again and again and has decided to make a journeyaround the world. Whenever a knight moves, it is two squares in one direction and one squ