全错位排列组合公式_无顺序排列组合公式

全错位排列组合公式_无顺序排列组合公式不容易系列之一ProblemDescription大家常常感慨,要做好一件事情真的不容易,确实,失败比成功容易多了!做好“一件”事情尚且不易,若想永远成功而总从不失败,那更是难上加难了,就像花钱总是

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

 

不容易系列之一

Problem Description
大家常常感慨,要做好一件事情真的不容易,确实,失败比成功容易多了!

做好“一件”事情尚且不易,若想永远成功而总从不失败,那更是难上加难了,就像花钱总是比挣钱容易的道理一样。

话虽这样说,我还是要告诉大家,要想失败到一定程度也是不容易的。比如,我高中的时候,就有一个神奇的女生,在英语考试的时候,竟然把40个单项选择题全部做错了!大家都学过概率论,应该知道出现这种情况的概率,所以至今我都觉得这是一件神奇的事情。如果套用一句经典的评语,我们可以这样总结:一个人做错一道选择题并不难,难的是全部做错,一个不对。

不幸的是,这种小概率事件又发生了,而且就在我们身边:

事情是这样的——HDU有个网名叫做8006的男性同学,结交网友无数,最近该同学玩起了浪漫,同时给n个网友每人写了一封信,这都没什么,要命的是,他竟然把所有的信都装错了信封!注意了,是全部装错哟!

现在的问题是:请大家帮可怜的8006同学计算一下,一共有多少种可能的错误方式呢?

 

 

Input
输入数据包含多个多个测试实例,每个测试实例占用一行,每行包含一个正整数n(1<n<=20),n表示8006的网友的人数。
 

 

Output
对于每行输入请输出可能的错误方式的数量,每个实例的输出占用一行。
 

 

Sample Input
2 3
 

 

Sample Output
1 2
 

 

Author
lcy
 


 

Mean: 

 略

analyse:

 就是错排公式的简单运用。下面来了解一下错排公式。

所谓错排就是全错位排序公式,即被著名数学家欧拉(Leonhard Euler,1707-1783)称为组合数论的一个妙题的“装错信封问题”,他求解这样的问题:

一个人写了n封不同的信及相应的n个不同的信封,他把这n封信都装错了信封,问都装错信封的装法有多少种?

 

递推公式:f(n)=(n-1) * {f(n-1)+f(n-2)}

 

 

Time complexity:O(n)

 

Source code:

 

// Memory   Time
// 1347K     0MS
// by : Snarl_jsb
// 2014-09-15-21.27
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<vector>
#include<queue>
#include<stack>
#include<map>
#include<string>
#include<climits>
#include<cmath>
#define N 1000010
#define LL long long
using namespace std;

long long a[N];
void cuopai(long long n)  ////   Formula :  f(n)=(n-1)*{f(n-1)+f(n-2)} ;
{
    a[1]=0,a[2]=1;
    for(long long i=3;i<=n;i++)
    {
        a[i]=(i-1)*(a[i-1]+a[i-2]);
    }
}

int main()
{
//    freopen("C:\\Users\\ASUS\\Desktop\\cin.cpp","r",stdin);
//    freopen("C:\\Users\\ASUS\\Desktop\\cout.cpp","w",stdout);
    cuopai(30);
    int n;
    while(cin>>n)
    {
        cout<<a[n]<<endl;
    }

    return 0;
}

  

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/166493.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea激活码2021mac【在线注册码/序列号/破解码】

    idea激活码2021mac【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    50
  • PCA最小平方误差理论推导

    PCA最小平方误差理论推导PCA求解其实是寻找最佳投影方向,即多个方向的标准正交基构成一个超平面。理论思想:在高维空间中,我们实际上是要找到一个d维超平面,使得数据点到这个超平面的距离平方和最小

    2021年12月30日
    41
  • 每天一个linux命令(43):killall命令

    每天一个linux命令(43):killall命令

    2021年9月16日
    57
  • wireshark抓包tcp四次挥手_wireshark抓包数据怎么看

    wireshark抓包tcp四次挥手_wireshark抓包数据怎么看本文内容有以下三个部分:wireshark过滤规则osi模型简述tcp三次握手一、wireshark过滤规则wireshark只是一个抓包工具,用其他抓包工具同样能够分析tcp三次握手协议。以下这张图片完整地展现了wireshark的面板。使用好wireshark一个关键是如何从抓到的众多的包中找到我们想要的那一个。这里就要说filter过滤规则了。如上图,在过滤器方框,我们加上了ip.sr

    2022年10月3日
    2
  • 使用adb logcat命令显示Android设备上的Log日志

    使用adb logcat命令显示Android设备上的Log日志使用adblogcat命令显示Android设备上的Log日志有时候我们在手机程序上的日志要在其他地方调试,然后要看里面的Log日志。本文教大家如何在不需要studio就可以查看手机程序中的Log日志。实现这个功能的前提是使用adb命令,所以必须要有手机和电脑,还有安装adb,adb程序是很小的几M就可以。一.在cmd窗口查看手机的Log日志在确定连上手机后(adbdevi…

    2022年6月10日
    102
  • jenkins自定义构建参数_git创建远程仓库分支

    jenkins自定义构建参数_git创建远程仓库分支前言当我们的自动化项目越来越多的时候,在代码仓库会提交不同的分支来管理,在用jenkins来构建的时候,我们希望能通过参数化构建git仓库的分支。下载安装GitParameter插件系统管理-

    2022年7月29日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号