HDU 1465(不容易系列之一)

错排问题,由于数据量很小,直接打表即可。

递推关系式:dp[i] = (i-2)*(dp[i-1]+dp[i-2]),dp[1]=0,dp[2]=1。(注意使用 __int64 类型)

#include <iostream>
using namespace std;
const int MAXN = 25;

__int64 dp[MAXN];

int main()
{
	dp[0] = dp[1] = 0;
	dp[2] = 1;
	for (int i = 3; i <= 20; i++) //打表
	{
		dp[i] = (i - 1) * (dp[i - 1] + dp[i - 2]);
	}
	int n;
	while (cin >> n)
	{
		cout << dp[n] << endl;
	}
	return 0;
}

继续加油。

发布了325 篇原创文章 · 获赞 1 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Intelligence1028/article/details/105459183