错排问题

【题目描述】

求多少个n个数的排列A ,满足对于任意的i(1\leq i\leq n)A_i\neq i

输入格式

一个整数n

输出格式

一个整数,表示答案。

输入样例

2

输出样例

1

数据范围与提示

对于100\%的数据,1\leq n\leq 20


思路

A_ 1n-1种选法,设A_1=2,则A_2=1或j(1\leq j\leq n)。当A_2=1时,问题等价于n-2个数时的选法;当A_2=j(1\leq j\leq n)时,问题等价于n-1个数时的选法。得出递推关系式:
f_n=(n-1)(f_{n-1}+f_{n-2})
下面是C++版的代码。

#include <bits/stdc++.h>
using namespace std;
long long ans[21]= {0,0,1},n;

int main()
{
    for(int i=3; i<=20; i++)
        ans[i]=(i-1)*(ans[i-2]+ans[i-1]);
    cin>>n;
    cout<<ans[n];
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目来源 :http://acm.hdu.edu.cn/showproblem.php?pid=2048 神、上帝...
    Rimuru1314阅读 492评论 0 0
  • 你的数学直觉怎么样?你能凭借直觉,迅速地判断出谁的概率大,谁的概率小吗?下面就是 26 个这样的问题。如果你感兴趣...
    cnnjzc阅读 7,057评论 0 12
  • 概况 学好算法和数据结构对培养编程内力很重要 3Points: Chunk it up Deliberate pr...
    番茄沙司a阅读 1,948评论 0 3
  • 线性表 线性表的结构特点:除第一及最后一个元素外,每个结点都只有一个前趋和只有一个后继。表长:元素总个数n空表:n...
    步行植物阅读 653评论 0 2
  • 2018京东前端笔试题 一、单选题+多选题 1、匹配页面中输入的字符串,范围需要是[0.5,500],小数位后最多...
    Adonia汪阅读 3,580评论 0 2