涂色问题(Python)

Posted jiduxia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了涂色问题(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)的主要内容,如果未能解决你的问题,请参考以下文章

[算法小练][图][拓扑排序+深度优先搜索] 平板涂色问题

Python 向 Postman 请求代码片段

使用 Python 代码片段编写 LaTeX 文档

华为OD机试真题Java实现数字涂色真题+解题思路+代码(2022&2023)

13 个非常有用的 Python 代码片段

如何在 python 中并行化以下代码片段?