zoukankan      html  css  js  c++  java
  • 4.D

    题目连接 http://acm.hust.edu.cn/vjudge/contest/125308#problem/

    题目大意 n个信封 n封信 要把所有的信都装错信封,求最多有多少种错误的方式。

    编号1~n个元素,编号1~n个位置。d[n]代表n个元素,n个位置,错误的所有方式。

    1.先放第n个元素,一共有n-1种放法

    2.放编号为k的元素,这时有两种情况⑴把它放到位置n,那么,对于剩下的n-1个元素,由于第k个元素放到了位置n,剩下n-2个元素就有d(n-2)种方法;⑵第k个元素不把它放到位置n,这时,对于这n-1个元素,有d(n-1)种方法;

    所以有 d[n]=(n-1)*(d[n-1]+d[n-2] );d[1]=0;d[2]=1;

    此外虽然1<n<20;但d[20]却很大,要用long long 型(lld)八个字节 19位数。

    #include<iostream>
    #include<cstdio>
    using namespace std;
    long long p[25];
    void in()
    {
        p[1]=0;p[2]=1;
        for(int i=3;i<=20;i++)
        p[i]=(i-1)*(p[i-1]+p[i-2]);
    
    }
    int main()
    {
        in();
        int n;
        while(scanf("%d",&n)!=EOF)
        {
            printf("%lld
    ",p[n]);
        }
        return 0;
    }
  • 相关阅读:
    实验0 了解和熟悉操作系统
    学习进度条
    0302软件构建与教学
    评论任务
    学习进度条
    sprint3个人总结
    软件工程学期总结
    6.3 学术诚信与职业道德
    阅读《构建之法》第8、9、10章
    nodejs学习心得
  • 原文地址:https://www.cnblogs.com/Twsc/p/5727017.html
Copyright © 2011-2022 走看看