zoukankan      html  css  js  c++  java
  • 不容易系列之一 —— 错排

    题目:

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

    现在的问题是:请帮可怜的8006同学计算一下,一共有多少种可能的错误方式呢?
     
    Input
    输入数据包含多个多个测试实例,每个测试实例占用一行,每行包含一个正整数n(1<n<=20),n表示8006的网友的人数。
     
    Output
    对于每行输入请输出可能的错误方式的数量,每个实例的输出占用一行。
     
    Sample Input
    2
    3
     
    Sample Output
    1

    2

    典型的错排公式F(n)=(n-1)*F(n-1)+(n-1)*F(n-2)

    可以这么想,如果有一个信里面装的对,其他都是错排,那么这封信和任意一封交换都会全部错排;如果有两封信装的对,其他都是错排,则交换这两封就ok了.

    #include <iostream>
    
    using namespace std;
    
    long long F(int x){//数值较大选用long long
        if(x==1)
            return 0;
        if(x==2)
            return 1;
        return F(x-1)*(x-1)+(x-1)*F(x-2);
    }
    int main()
    {
        int n;
        while(scanf("%d",&n)!=EOF)
            printf("%lld
    ",F(n));
        return 0;
    }
  • 相关阅读:
    Spring Bean(一)
    Spring IOC(一)
    三种常用的查找算法
    分布式架构的一致性
    Java内存区域笔记(一)
    分组交换和电路交换
    Python说文解字_Python之多任务_03
    Python说文解字_Python之多任务_02
    Python说文解字_Python之多任务_01
    Python说文解字_杂谈09
  • 原文地址:https://www.cnblogs.com/xym4869/p/8626231.html
Copyright © 2011-2022 走看看