搜索
热搜: NOIP OIer 神牛
查看: 311|回复: 0

1249答案

[复制链接]

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-8-22 10:54:21 | 显示全部楼层 |阅读模式
#include<iostream>
#include<cstring>
using namespace std;
#define N 11
int a[8][2]={{-2,-1},{-2,1},{-1,2},{1,2},{2,1},{2,-1},{1,-2},{-1,-2}};
bool s[N][N];
int n,m,t,x,y;
int ans=0;

void dfs(int px,int py,int step){
        if(step==n*m){
                ans++;
                return ;
        }
        for(int i=0;i<8;i++){
                int nx=px+a[i][0];
                int ny=py+a[i][1];
                if(nx>=0&&nx<n&&ny>=0&&ny<m&&s[nx][ny]==false){
                        s[nx][ny]=true;
                        dfs(nx,ny,step+1);
                        s[nx][ny]=false;
                }
               
        }
}

int main(){
        cin>>t;
        for(int i=1;i<=t;i++){
                cin>>n>>m>>x>>y;
                ans=0;
                memset(s,0,sizeof(s));
                s[x][y]=true;
                dfs(x,y,1);
                cout<<ans<<'\n';
        }
        return 0;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

津ICP备19006949号-1 | 津公网安备12010102000465号

快速回复 返回顶部 返回列表