Advertisement

题号:8465 马走日(2.5基本算法之搜索)

阅读量:

8465:马走日

总时间限制: 1000ms 内存限制: 1024kB
描述
在中国象棋中,马的移动方式遵循日字形的规则。

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

复制代码
    #include<iostream>
    using namespace std;
    //http://noi.openjudge.cn/ch0205/8465/
    //马走日的方式有8种,画一个格点图试试看,然后就是正常dfs
    //规模比较小才能这样做,每次遇到不能递归的时候就去判断是否已经都遍历过 
    int t,n,m,x1,y1,res,g[20][20];
    i

全部评论 (0)

还没有任何评论哟~