您的位置:首页 > 其它

51nod 1639 绑鞋带(递推)

2017-12-02 20:49 357 查看

Description

有n根鞋带混在一起,现在重复n次以下操作:随机抽出两个鞋带头,把它们绑在一起。可以想象,这n次之后將不再有单独的鞋带头,n条鞋带系成了一些环。那么有多大概率刚好所有这些鞋带只形成了一个环?

Input

仅一行,包含一个整数n (2<=n<=1000)。

Output

输出一行,为刚好成环的概率。

Input示例

2


Output示例

0.666667


解题思路

假设ans[i-1]为i-1根鞋带成环的概率,现在要加入第i根鞋带,为使之成环那么这根鞋带可以放在i-1根鞋带之间的任意一个位置,且有两个鞋带头即每个位置有两种选择,则共有2*(i-1)中选择。此时,对于总的情况来说,增加了第i根鞋带独自成环的情况,即共有2*(i-1)+1中情况,则ans[i]=ans[i−1]∗2∗(i−1)2∗i−1。

代码实现

#include<bits/stdc++.h>
using namespace std;
#define maxn 1007
double ans[maxn];
int main()
{
int n;
cin>>n;
ans[1]=1.0;
for(int i=2;i<=n;i++)
ans[i]=ans[i-1]*2*(i-1)/(2*i-1);
cout<<ans
<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: