d=[(-1,-2),(1,-2),(-2,-1),(2,-1),(-2,1),(2,1),(-1,2),(1,2)]
def dfs(x,y,s):
    global res
    if s==n*m:
        res+=1
        return
    for a,b in d:
        if x+a<0 or x+a>=n or y+b<0 or y+b>=m or vis[x+a][y+b]==1:
            continue
        # if 0<=x+a<n and 0<=y+b<m and vis[x+a][y+b]==0:
        vis[x+a][y+b]=1
        dfs(x+a,y+b,s+1)
        vis[x+a][y+b]=0

t=int(input())
raw=[]
for x in range(t):
    raw.append(map(int,input().split()))
for n,m,x,y in raw:
    res=0
    vis=[[0 for x in range(m)] for y in range(n)]
    vis[x][y]=1
    dfs(x,y,1)
    print(res)


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论