七巧板涂色算法(Python)
程序员文章站
2022-03-03 11:21:30
...
描述:有如图所示的七巧板,试编写算法,使用至多4种不同颜色对七巧板进行涂色(每块七巧板一种颜色),要求相邻区域的颜色互不相同,打印输出所有可能的涂色方案。
测试:结果
[1, 2, 1, 3, 2, 1, 4]
[1, 2, 1, 3, 2, 4, 4]
...
[4, 3, 4, 2, 3, 1, 1]
[4, 3, 4, 2, 3, 4, 1]
产生的总次数:672
class A:
def __init__(self, sum = 0):
self.sum = sum
def add(self):
self.sum = self.sum + 1
def print(self):
print("产生的总次数:{}".format(self.sum))
#检查第i块七巧板放第j种颜色是否冲突
def check(i,j):
for k in range(0,i):
#第i块和第k块七巧板相连,且第k块颜色为第j种颜色
if (1==data[i][k] and v[k] == j):
return False
k = k+1
return True
sum = A()
def printSolution():
print(v)
sum.add()
def search(i):
if i == 7:
printSolution()
else:
for j in range(1,5):
if(check(i,j)):
v.append(j)
search(i+1)
v.pop()
v = []
data=[[0,1,0,0,1,0,1],[1,0,0,1,0,1,0],[0,0,0,1,0,0,1],[0,1,1,0,0,1,1],
[1,0,0,0,0,0,1],[0,1,0,1,0,0,0],[1,0,1,1,1,0,0]]
if __name__ == '__main__':
search(0)
sum.print()
参考自七巧板设计算法(C++版) 上一篇: 深搜_模板题_迷宫问题
下一篇: poj 3984 -- 迷宫问题 深搜