环形涂色(dp)

578 篇文章 ¥299.90 ¥399.90
570 篇文章 ¥299.90 ¥399.90
本文探讨了环形涂色问题,当环形由14个格子组成,需要使用3种颜色且相邻格子颜色不同时,涂色方案数为24576。当格子数增加到50时,通过动态规划的方法计算出涂色方案的总数。源代码以JAVA实现,动态规划数组f记录不同格子数的涂色方案数,递推公式为f[i] = f[i-2] * 2 + f[i-1],分别考虑相邻格子颜色相同和不同的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6. 环形涂色

 

如上图,组成环形的格子需要涂3种颜色。
它们的编号分别是1~14
相邻的格子不能用相同的颜色。
涂色方案的数目是:24576

当格子数目为50的时候,求涂色方案总数。

【源代码】
【JAVA:于航】

public class A
{
  /*
  static long f(int n){
    if(n==1) return 3;
    if(n==2) return 6;
    return 2 * f(n-2) + f(n-1);
  }
  */
 
  public static void main(String[] args){
    long[] f = new long[50+10];
    f[1] = 3;
    f[2] = 6;
    for(int i=3; i<=50; i++){

      f[i] = f[i-2] * 2 + f[i-1];

//①第二个与第n个同色时,第一个可以涂两种颜色  ②第二个与第n个不同色时,第一个可以涂一种颜色

&nb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值