测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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; }
上一题 下一题