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