有n个带编号的人和n个带编号的座位,求每个人都不坐在相同号码座位的方案数目
Posted 一米阳光213
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有n个带编号的人和n个带编号的座位,求每个人都不坐在相同号码座位的方案数目相关的知识,希望对你有一定的参考价值。
题目描述:
有 n 位同学编号分别为1, 2, ..., n; 有 n 个座位编号分别为1, 2, ..., n。
现在为每一位同学安排一个座位,求每个同学都坐在与自己编号不同的座位的方案数目。
分析:动态规划思想:
假设 i 位同学,i 个座位,满足题意的方案数为 f(i)。
考察分别有 (i-1) 和 i 位同学的情况。
为了形象化地进行思考,设 i = 4。原来 i = 3 的时候,有 f(3) 种满足题意的方案。现在加入 i=4,则前面 1,2,... (i-1) 即 1,2,3 都可以坐在编号=4 的座位上,所以有 (i-1) 种可能。
假设现在是 1 坐在 4 号座位上,即:
座位:1 2 3 4
学生:? ? ? 1
现在考察 4 号学生应该坐在哪里呢?
(1) 4 号学生 坐在 1 号座位上,即:
座位:1 2 3 4
学生:4 ? ? 1
那么,我们可以非常明显地看到,可以把 1号座位和4 号座位拿开,让 2号同学和3号同学选 2号座位和 3号座位,即 f(i-2) ( f(2) )
(2)4 号学生 不能坐 1号座位上,那么此时:
待安排的学生: 2 号,3 号,4 号
待安排的座位: 1 号,2 号,3 号
约束条件: 2 号学生 不能坐 2 号座位; (题目明确的要求!)
3 号学生 不能坐 3 号座位;
4 号学生 不能坐 1 号座位
好!这个题目最有意思的就是这种情况,我们可以抽象地将 4号学生和 1号座位 想象成相匹配的 x 号学生和 x 号座位,那么:
待安排的学生为 x 号,2号,3号;
待安排的座位为 x 号,2号,3号;
显然,满足题意的方案数 = f(i-1) ( f(3) )
综上所述, f(i) = (i-1) * ( f(i-1) + f(i-2) )
这道题比较难理解的就是: 当 4 号学生 不能坐 1号座位上,需要抽象地将此问题转化为 规模为 (i-1) 的原问题。
以上是关于有n个带编号的人和n个带编号的座位,求每个人都不坐在相同号码座位的方案数目的主要内容,如果未能解决你的问题,请参考以下文章