• 马走日


    马走日

    链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=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
    #include<iostream>
    #include<cstdio>
    using namespace std;
    int a[8][2]={{-2,1},{-1,2},{1,2},{2,1},{2,-1},{1,-2},{-2,-1},{-1,-2}};
    int maxn=0;
    int N,M,x,y;
    int mp[12][12],cnt;
    
    void s(int x,int y,int k){
        
        for(int i=0;i<8;i++)
        {
            int x1=x+a[i][0],y1=y+a[i][1];
            if(x1>=0&&x1<N&&y1>=0&&y1<M&&!mp[x1][y1])
            {
                
                mp[x1][y1]=k;    
                if(k==N*M){
                    cnt++;
                }    
                s(x1,y1,k+1);
                mp[x1][y1]=0;
            }
        }
    }
    int main(){
        int t ;
        cin>>t;
        while(t--)
        {
            
            cin>>N>>M>>x>>y;
            cnt=0;
            for(int i=0;i<N;i++)
                for(int j=0;j<M;j++)
                    mp[i][j]=0;
            mp[x][y]=1;
            s(x,y,2);
            cout<<cnt<<endl;
        }
        
    }
  • 相关阅读:
    js yui
    ie tbody table 兼容方法
    js json ie不支持json
    js ie 6,7,8 使用不了 firstElementChild
    js for in
    js json 单双引号互换
    html table 上移下移
    js autoComplate
    开发总结
    CentOS6.7 下安装git
  • 原文地址:https://www.cnblogs.com/EdSheeran/p/7581446.html
Copyright © 2020-2023  润新知