A38159. 旅行
填空题
困难
知识点
题目描述
旅行
题目描述
转眼毕业了,曾经朝夕相处的同学们不得不都各奔东西,大家都去了不同的城市开始新的生活。在各自城市居住了一段时间后,他们都感到了一些厌倦,想去看看其他人的生活究竟如何,于是他们都选择到另一个同学所在城市去旅游,并且希望旅游的城市各不相同,他们想知道有多少种不同的方案,可是数量实在太多了,他们无法计算出来,你能帮助他们吗。
输入
一个正整数n(n<200),表示人数。
输出
一个数,表示有多少不同的方案。
样例输入
3
样例输出
2
提示
有如下两种方案: 同学1去同学2的城市,同学2去同学3的城市,同学3去同学1的城市; 同学1去同学3的城市,同学3去同学2的城市,同学2去同学1的城市。
参考答案
#include<iostream>
using namespace std;
unsigned long long a[22];
long long ans(int x)
{
if(a[x]) return a[x];
else if(x==1) return a[x]=0;
else if(x==2) return a[x]=1;
else if(x==3) return a[x]=2;
else return a[x]=ans(x-1)*(x-1)+ans(x-2)*(x-1);
}
int main()
{
int n;
cin>>n;
ans(20);
cout<<ans(n);
//printf("%llu",ans(n));
return 0;
}
上一题
下一题