题目
分析
很明显的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)