zoukankan      html  css  js  c++  java
  • 三国佚事——巴蜀之危

    题目描述

    话说天下大势,分久必合,合久必分。。。却道那魏蜀吴三国鼎力之时,多少英雄豪杰以热血谱写那千古之绝唱。古人诚不我欺,确是应了那句“一将功成万骨枯”。 
    是夜,明月高悬。诸葛丞相轻摇羽扇,一脸愁苦。原来是日前蜀国战事吃紧,丞相彻夜未眠,奋笔急书,于每个烽火台写下安排书信。可想,这战事多变,丞相运筹 帷幄,给诸多烽火台定下不同计策,却也实属不易。
    谁成想这送信小厮竟投靠曹操,给诸葛丞相暗中使坏。这小厮将每封书信都投错了烽火台,居然没有一封是对的。不多时小厮便被抓住,前后之事却也明朗。这可急坏了诸葛丞相,这书信传错,势必会让蜀军自乱阵脚,不攻自破啊! 诸葛丞相现在想知道被这小厮一乱,这书信传错共有多少种情况。

    输入

             题目有多组数据,处理到文件结尾,丞相共写了n(1 <= n <= 150)封书信,输入一个正数n。

    输出

             输出书信传错的情况数。

    示例输入

    1
    3
    6
    

    示例输出

    0
    2
    265
    

    提示

    View Code
     1 include<stdio.h>
     2 int main()
     3 {
     4     int i, n  ;
     5     long long  f[160] ;
     6     while(scanf("%d",&n)!=EOF)
     7     {
     8         f[0] = 0 ;
     9         f[1] = 0 ;
    10         f[2] = 1 ;
    11         for(i=3; i<=n; i++)
    12         {
    13            f[i] = (i-1)*(f[i-1]+f[i-2]) ;
    14         }
    15         printf("%lld\n", f[n]) ;
    16     }
    17     return 0 ;
    18 }

    总结:这是错排问题,

    当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用M(n)表示,那么M(n-1)就表示n-1个编号元素放在n-1个编号位置,各不对应的方法数,其它类推.
    第一步,把第n个元素放在一个位置,比如位置k,一共有n-1种方法;
    第二步,放编号为k的元素,这时有两种情况⑴把它放到位置n,那么,对于剩下的n-1个元素,由于第k个元素放到了位置n,剩下n-2个元素就有M(n-2)种方法;⑵第k个元素不把它放到位置n,这时,对于这n-1个元素,有M(n-1)种方法;
    综上得到
    M(n)=(n-1)[M(n-2)+M(n-1)]
    特殊地,M⑴=0,M⑵=1
  • 相关阅读:
    Hadoop出现 Wrong FS: hdfs://......错误的解决方法
    在Linux下安装JDK环境
    卸载Linux自带的JDK
    hadoop1.2.1伪分布模式安装教程
    spring配置bean的生命周期
    spring注入的四种方式
    python re模块search()与match()区别
    VB.NET操作Excel
    位运算
    Python简单源码解析
  • 原文地址:https://www.cnblogs.com/yelan/p/2876970.html
Copyright © 2011-2022 走看看