Last active
December 10, 2015 01:28
-
-
Save tioover/4358497 to your computer and use it in GitHub Desktop.
在一个正六边形的六个区域栽种观赏植物,要求同一块中种同一种植物,相邻的两块种不同的植物.现有4种不同的植物可供选择,则有?种栽种方案
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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