旅行(典型的错位排序问题)

转眼毕业了,曾经朝夕相处的同学们不得不都各奔东西,大家都去了不同的城市开始新的生活。在各自城市居住了一段时间后,他们都感到了一些厌倦,想去看看其他人的生活究竟如何,于是他们都选择到另一个同学所在城市去旅游,并且希望旅游的城市各不相同,他们想知道有多少种不同的方案,可是数量实在太多了,他们无法计算出来,你能帮助他们吗。

输入格式

一个正整数 n(n\le 20)n(n≤20),表示人数。

输出格式

一个数,表示有多少不同的方案。

Sample 1

Inputcopy Outputcopy
3
2

思路:

n个人有n个家乡,在这里我们拿最后一个人来分析,最后一个人的方案无非就两种,要么和另外的某一个人交换家乡来旅行,要么是他去一个人的家乡,但那个人不去他的家乡,这两种情况就可以表示这n个人的方案了。

第一种:

与别人交换旅行,那么这个时候他们是不是可以被看作是一个整体,不会被拆开,但是这个人是谁不知道,所以有n-1种情况,把这个固定的整体拿出来以后我们是不是发现,情况转变成求n-2个人的方案,所以这种情况的方程就可以写出:f ( n )=( n - 1 ) * f ( n - 2 ) ;

第二种:

这种情况我们可以形象的理解成二和一,比如A的家乡被B去了,但是A还没去过别人的家乡,B也没被别人来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值