杭电2048
来源:互联网 发布:淘宝网高达模型 编辑:程序博客网 时间:2024/06/05 11:01
刚开始做得时候只考虑到前面N-1个人拿的都不是自己的票,然而可以有一个人不拿自己的票;考虑不完全
如果前面N-1个人拿的都不是自己的票,即前N-1个人满足错排,现在又来了一个人,他手里拿的是自己的票。只要他把自己的票与其他N-1个人中的任意一个交换,就可以满足N个人的错排。这时有N-1种方法。另外,我们考虑,如果前N-1个人不满足错排,而第N个人把自己的票与其中一个人交换后恰好满足错排。这种情况发生在原先N-1人中,N-2个人满足错排,有且仅有一个人拿的是自己的票,而第N个人恰好与他做了交换,这时候就满足了错排。因为前N-1个人中,每个人都有机会拿着自己的票。所以有N-1种交换的可能。综上所述:f(n) = (i - 1) * [f(n - 1) + f(n - 2)]
注意溢出问题,特别是子函数容易被忽略,做得时候就忘记了子函数中变量C溢出了
输出的结果要是float型的,所以要乘以100.0,不然会出错
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
__int64 jicheng(int a);//注意溢出
__int64 a[21];
int n,i;
a[1]=0;
a[2]=1;
a[3]=2;
for(i=4;i<21;i++)
{
a[i]=(i-1)*(a[i-2]+a[i-1]);
}
cin>>n;
for(i=0;i<n;i++)
{
int m;
cin>>m;
cout<<setiosflags(ios::fixed)<<setprecision(2)<<a[m]*100.0/jicheng(m)<<'%'<<endl;
}
}
__int64 jicheng(int a)
{
__int64 c;
if(a==1)
return 1;
c=a*jicheng(a-1);
return c;
}
- 杭电2048
- 杭电2048
- 杭电 2048
- 杭电2048
- 杭电ACM 2048
- 杭电 2048
- 杭电 2048 数塔
- 杭电2048解题报告
- 杭电2048数塔
- 杭电
- 杭电
- 杭电
- 杭电 2048 神、上帝以及老天爷
- 杭电2048//C++带小数点输出
- 杭电 2048 神、上帝以及老天爷
- 杭电2048神、上帝以及老天爷
- 杭电2048 神、上帝以及老天爷
- 【杭电】[2048]神、上帝以及老天爷
- 20世界十大算法
- Server Error in '/fdc' Application错误解决办法
- 2013年1季度中国汽车车型动力满意度研究报告 ——合资A+级车
- 作业
- 用twisted创建tcp socket长链接amf server服务
- 杭电2048
- C++中new与delete问题学习
- 一步一步学习springmvc之一:基本环境的搭建
- 黑马程序员_反射
- Mongodb 数据结构-BSON
- 盈利从免费开始!
- linux+nginx+python+django环境配置
- jquery实现冒泡提示
- 用MES扩展精益制造