题目

分析
很明显的DFS题,这里关键要找到边界,即x与y的关系,容易知道y<=4-x,小于和等于是不同的搜索,小于的话就在同一行搜索,从下一列搜索,等于的话就从下一行的第一个搜索。
代码
num=[[0]*5 for i in range(5)]
num[0]=[1,0,1,0,1]
count=0
def dfs(x,y):
global count
if x==5:
if num[4][0]==1:
count+=1
return
for i in ['&','|',"^"]:
if i =='&':
num[x][y]=num[x-1][y]&num[x-1][y+1]
elif i=='|':
num[x][y]=num[x-1][y]|num[x-1][y+1]
elif i=='^':
num[x][y]=num[x-1][y]^num[x-1][y+1]
if y==4-x:
dfs(x+1,0)
if y<4-x:
dfs(x,y+1)
dfs(1,0)
print(count)
本文介绍了一种使用深度优先搜索(DFS)方法解决二维矩阵中基于逻辑运算(&,|,^)的计数问题,通过递归实现并找出x与y的关系,确保在给定条件下正确计数。
1143

被折叠的 条评论
为什么被折叠?



