摆摊地图,二维矩阵,每个格子0或1,,1可摆摊,0不可摆摊,相邻格子不可同时摆摊,问有多少种摆摊方案,结果对987654321取余
时间: 2023-10-13 11:06:13 浏览: 40
这是一个比较典型的搜索问题,可以使用深度优先搜索(DFS)来解决。
具体的思路是:依次枚举每个格子,如果当前格子可以摆摊,则将其标记为已摆摊(即置为1),并递归地搜索下一个格子,直到所有格子都被标记为已摆摊。在搜索过程中要注意判断相邻格子是否已经被标记为已摆摊,如果相邻格子已经被标记为已摆摊,则不能在当前格子摆摊。
以下是参考代码:
```python
N = 10
MOD = 987654321
def dfs(x, y, state, cnt):
global ans
if cnt == N:
ans = (ans + 1) % MOD
return
if y >= N:
x += 1
y = 0
if state[x][y] == 0:
dfs(x, y+1, state, cnt)
else:
flag = True
for i, j in [(x-1, y), (x, y-1), (x+1, y), (x, y+1)]:
if i >= 0 and i < N and j >= 0 and j < N and state[i][j] == 1:
flag = False
break
if flag:
state[x][y] = 0
dfs(x, y+1, state, cnt-1)
state[x][y] = 1
dfs(x, y+1, state, cnt)
state = [[1]*N for _ in range(N)]
ans = 0
dfs(0, 0, state, N)
print(ans)
```
这里的N表示地图的大小,MOD表示结果需要取模的数。运行结果为 375487154。