Skip to content

Instantly share code, notes, and snippets.

@tioover
Last active December 10, 2015 01:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tioover/4358497 to your computer and use it in GitHub Desktop.
Save tioover/4358497 to your computer and use it in GitHub Desktop.
在一个正六边形的六个区域栽种观赏植物,要求同一块中种同一种植物,相邻的两块种不同的植物.现有4种不同的植物可供选择,则有?种栽种方案
#coding: utf8
count = 6
elems = [1, 2, 3, 4] # 代表四种颜色
def way(elem, index, head):
if index == count - 2:
# 到了倒数第二个花台的时候,根据自己是否和第一个花台一样来算出方法数
if elem == head:
return 3 # 倒数第二个颜色和第一个相同,所以最后一个花台有3种方法
else:
return 2 # 倒数第二个和第一个不相同,所以最后一个只有两种方法
else:
ways = 0;
myelems = elems[:] # 复制颜色
myelems.remove(elem)
for e in myelems:
ways += way(e, index+1, head) # 递归
return ways
def main():
ways = 0
for e in elems:
ways += way(e, 0, e)
print ways
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment