题目简述:n封信传向n个烽火台,求传错的种类数
解题思路:
1、首先考虑是一个递归的问题。即用排列组合的思想考虑。
2、排列组合几组数据,发现其中有规律:
a[1]=0;
a[2]=1;
a[3]=(3-1)*(1+0)
……
a[n]=(i-1)*(a[i-1]+a[i-2])
源代码:
#include <iostream>
using namespace std;
int main()
{
int n;
long long int a[21];
a[0]=0;
a[1]=0;
a[2]=1;
for (int i=3;i<=20;i++)
a[i]=(i-1)*(a[i-1]+a[i-2]);
while (cin>>n)
cout<<a[n]<<endl;
return 0;
}
解题感想:这道题也是考虑了好久好久,开始没找到规律,用排列组合的方法算了好久,测试了几组数据终于找到规律。