环形染色问题

本文讲述了环形染色问题,属于排列组合

如图所示,一个圆环被分成 m 块,用 n 种不同颜色给每一块染色,要求相邻两块的颜色不相同。此类问题称之为环形染色问题。

 首先,先用分类讨论来讲一下n=4,m=4的情况

首先,加编号

先考虑A——>4(n)种

B——>3(n-1)种

①:A=C

        C——>1(A)种

        D——>3 【n(4) - A/C(1)=3】种

        \\ Total_{A=C}=A\times B\times C\times D=4\times 3 \times 1\times3=36 

②:A≠C

        C——>2【n(4) - A(1) - B(1) = 2】种

        D——>2【n(4) - A(1) - C(1) = 2】种

        Total_{A \neq C}=A\times B\times C\times D=4\times 3 \times 2\times2=48

Total=Total_{A=C}+Total_{A\ne C}=36+48=84

有没有通项公式,那肯定有!

令一数列 a_i:m=i 的情况数

Step 1:把环变成条

情况数记作T_i=i\cdot (i-1)^{m-1},为什么不用多说,乘法原理即可(mj是第 j 个点的情况数)\{_{m_j=i\ \ \ \ \ \ \ \ \ \ \ i=1} ^{m_j=(i-1)\ \ \ \ \ \ other}

a_iT_i 有啥区别?

对,\\a_i : m_1 \ne m_n\\ T_i:m_1 \ne m_n \ or \ m_1=m_n

a_1=a_n\\So \ a_1\ne a_{n-1}

所以剩余情况就是a_{i-1}(其他也都满足要求)

可得一个式子:a_i+a_{i-1}=T_i=n\cdot(n-1)^{i-1}记作①式

结束了吗,NO!

Step 2:

右式换个模样:n\cdot(n-1)^{i-1}\\=(n-1+1)\cdot(n-1)^{i-1}\\=(n-1)\cdot(n-1)^{i-1}+(n-1)^{i-1}\\=(n-1)^i+(n-1)^{i-1}

移项可得,a_i-(n-1)^i=(n-1)^{i-1}-a_{i-1}记作②式

令一数列 b,b_i=a_i-(n-1)^m记作③式

\frac{b_i}{b_{i-1}}=\frac{a_i-(n-1)^i}{a_{i-1}-(n-1)^{i-1}}记作④式

①式移项可得:a_{i-1}=n\cdot(n-1)^{i-1}-a_i

a_{i-1}的值带入④式

\\ \frac{b_i}{b_{i-1}}=\frac{a_i-(n-1)^i}{n\cdot(n-1)^{i-1}-a_i-(n-1)^{i-1}} \\ \\ = \ \ \ \ \ \ \frac{a_i-(n-1)^i}{(n-1)^i-a_i} = -1

所以 b 为等比数列

已知a_2=n\cdot (n-1)

b_2=a_2-(n-1)^2=n\cdot (n-1)-(n-1)^2=n-1

等比数列,那b_n=(-1)^{n-2}\cdot b_2

b_2=n-1带入此式,b_n=(-1)^n\cdot(n-1)

③式移项:a_i=b_i+(n-1)^i

 把b_i的值带入此式

a_i=(n-1)^m+(-1)^m\cdot (n-1)

验:当n=4,m=4,a_4=(4-1)^4+(-1)^4\cdot(4-1)=3^4+3=84

中心区域染色

圆环有m块区域,再加上中心区域共有m+1块区域;有n+1种颜色

由于中心区域与外环所有区域均相邻,则先涂中心区域,有n+1种涂色方法;

这个优先考虑(m+1),因为它影响了1~m里的所有块(1~m都不能和m+1一样),其余就是a_m

所以答案是(n+1)\cdot a_m=(n-1)\cdot [(n-1)^m+(-1)^m\cdot (n-1)]

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 环形链表的约瑟夫问题是指给定一个环形链表,从链表中的某个节点开始,按照一定规则进行报数并删除节点,直到所有节点都被删除。具体的解决方法是使用一个不带头结点的循环链表来处理。首先构建一个有n个节点的单循环链表,然后从指定的节点开始,按照规定的报数规则进行计数,当计数到达指定数值m时,删除对应的节点。然后从被删除节点的下一个节点重新开始计数,直到最后一个节点被删除,算法结束。遍历环形链表可以通过一个辅助指针curBoy来实现,通过一个while循环遍历链表,直到curBoy.next等于链表的头节点结束。生成一个出圈顺序可以通过创建一个辅助指针helper来实现,首先让helper指针移动m-1次,然后将指向的节点出圈。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [用环形链表解决约瑟夫问题](https://blog.csdn.net/yunhech/article/details/107444728)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【数据结构+算法】环形链表——约瑟夫环(Josephu)问题](https://blog.csdn.net/m0_45097186/article/details/104227805)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值