涂色问题(Python),,题目:将一个圆形等分
涂色问题(Python),,题目:将一个圆形等分
题目:将一个圆形等分成N个小扇形,将这些扇形标记为1,2,3,…,N。现在使用M种颜色对每个扇形进行涂色,每个扇形涂一种颜色,且相邻的扇形颜色不同,问有多少种不同的涂法?(N≥1,M≥3)
参考:https://blog.csdn.net/THmen/article/details/79529355
递归解决:
当n=1是,f(1,m) = m
当n=2是,f(1,m) = m(m-1)
当n=3是,f(1,m) = m(m-1)(m-2)
当n=4时,f(4,m) = m(m-1)(m-2)(m-2) + m(m-1)(m-1) = m(m-1)(m^2-3m+3)
当n=5时,f(5,m) = m(m-1)(m-2)(m-2) + m(m-1)(m-1)(m-1)= m(m-1)(m^2-3m+3)(m-1)= f(4,m)(m-1)
可推出关系 f(n,m) = f(n-1,m)(m-1)
def calculate(n,m): """ :param n: n个扇形 :param m: m种颜色 :return: 涂法的种类 """ if n == 1: return m if n == 2: return m * (m-1) if n == 3: return m * (m-1) * (m-2) if n == 4: return m * (m-1) * (m-2) * (m-2) + m * (m-1) * (m-1) return calculate(n-1,m) * (m-1)print(calculate(4,4))
涂色问题(Python)
相关内容
- python2 和 python3兼容写法,,一:使用Import
- Aspen Plus Automation in Python,,Aspen Plus
- ubuntu下创建虚拟python3开发环境,,友情链接:ubunt
- python _winreg模块,,详细资料请参考:ht
- python实现mschap2,,需要pycrypto
- python初体验-列表(3),,在 Python 列
- Python——基本的方法,,格式化我们经常会输出
- python初体验-循环,,一、while 循环
- 【开发者笔记】MQTT python测试笔记,,MQTT是基于订阅/
- Python 模块相对引用,,文件结构如下pyth
评论关闭