【递推】【NOIP模拟】彩灯的问题 Lights

本文介绍了如何解决NOIP比赛中关于彩灯设计的问题,通过递推算法来计算不同颜色方案。当有n盏彩灯和m种颜色时,需要设计相邻彩灯颜色不同的方案。通过分析相邻彩灯的关系,建立了递推公式f(n) = (m-2)*f(n-1) + (m-1)*f(n-2),并给出了初始条件f(1)、f(2)、f(3)。
摘要由CSDN通过智能技术生成

题目叙述

为了庆祝2009NOIP的举办,X市决定举行一次规模宏大的联欢晚会。设计师Tom被邀请负责晚会的灯光设计。
晚会舞台的正上方有 n 盏可以任意变换颜色的彩灯。它们排列成规则的圆形。为了增加舞台的美感,Tom 决定将任意两盏相邻彩灯设计成不同的颜色。因为演出时还要随时变换彩灯的颜色,所以Tom必须设计出多种方案(只要有一盏对应的彩灯颜色不同,就算两种不同的方案)。
于是一个棘手的问题摆在Tom面前:若有 m 种颜色, n 个彩灯,那么不同的设计方案有多少种呢?因为当 n , m 较大时,方案数太多,因此他需要你的帮助。
注意:因为每一盏彩灯的位置固定,所以经过旋转或翻转能重合的也算不同的方案。

输入

输入共有一行,两个数: n , m ,依次为彩灯的个数与颜色总数。 (1n100,1m100)

输出

输出仅有一个数为方案总数。

样例输入

3 4

样例输出

24


先给出自己的很麻烦的递推。
首先这道题一看就是递推
然后要怎么推呢?
简单来说,我们把灯断开拉成一条链,管他第一个灯在哪,就让他随便。
这样的话第一盏灯的颜色有 m 种情况。
对于每种情况分别计算,但是其实都是一样的,所以只需要计算其中一种然后 m 输出即可。
对于其中的一种,举 m=4 的情况。
看第一层。
比如说是A,那么第二层一定不能是A,只可能是BCD。
很显然BCD每个下面都会有一个A的可能。
再向下一层,则每个不是A的下面的 m1 种情况都会有一个A,每个A的下面的m-1种情况都不会是A。
然后推到了第n盏灯。
如果第 n1 盏灯的颜色是A的话,那么他下面第 n 盏灯的 m1 种情况为BCD均满足条件。
如果第 n1 盏灯的颜色不是A,那么要排除A和他本身,也就是说只剩 m2

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值