HDU 2048神、上帝以及老天爺(錯位排列)

HDU 2048神、上帝以及老天爺

HDU 2048神、上帝以及老天爺

題目鏈接如上,該題主要涉及錯位排列的知識!我看了一下別人的博客講解錯位排列的知識,我覺得不太好懂!今天我就用我自己的理解來幫助大家!

1總排列情況個數爲n!(這應該可以理解的)

錯位排列情況個數:
圖片如果未出現,多刷新幾次即可!
實在不能理解的推薦嗶哩嗶哩視頻或者自行搜素其他教程視頻
https://www.bilibili.com/video/BV1FW411x7Yd/?spm_id_from=333.788.videocard.1

https://www.bilibili.com/video/BV1fE41177aw?from=search&seid=10490763502163208232

這個錯位排列必須要理解到位!!!

那麼n個人全部都沒有中獎的概率爲D(n) / n!

接下來的代碼就非常容易理解啦!

#include<iostream>
#include<iomanip>
using namespace std;
long long fun(int t)//需要用long long類型否則越界
{
	if(t==1)
		return 1;
	else
		return t*fun(t-1);
}
int main()
{
	int  N;
	int i;
	//int f[22];不要用32位int
	long long f[22];//__int64 f[22]等價
	cin>>N;
	f[1]=0;
	f[2]=1;
	for(i=3;i<=20;i++)
		f[i]=(i-1)*(f[i-1]+f[i-2]);
	while(N--)
	{
		int n;
		cin>>n;
		cout<<setiosflags(ios::fixed)<<setprecision(2)<<(1.0*f[n]/fun(n)*100)<<"%"<<endl;
	}
	return 0;
}

普及一下,long long 類型也可以用戶__int64 來代替
__int64說白了就是long long ,感興趣的可以去百度一下!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章