[递推] A. 【例题1】错排问题
A. 【例题1】错排问题
题目描述
求多少个
n
n
n个数的排列
A
A
A ,满足对于任意的
i
(
1
≤
i
≤
n
)
i(1 ≤ i ≤ n)
i(1≤i≤n) 使
A
i
≠
i
Ai ≠ i
Ai=i 。
输入格式
一个整数 。
输出格式
一个整数,表示答案。
样例
输入样例
2
输出样例
1
数据范围与提示
对于
100
%
100\%
100%的数据,
1
≤
n
≤
20
1 ≤ n ≤ 20
1≤n≤20。
题目解析
首先这道题我们考虑递推;
首先,先以
f
(
1
)
=
0
,
f
(
2
)
=
1
f(1) = 0,f(2) = 1
f(1)=0,f(2)=1.(手推
1
,
2
1,2
1,2项您总会吧)
再从
3
3
3开始进行递推.
考虑从
n
n
n个数分别放在不同的位置有
n
n
n种方法,那么不放在原位就有
n
−
1
n-1
n−1种方法.
再考虑从
n
n
n中提取一个数
l
l
l.
考虑两种情况
- 把
l
l
l放在原位上:那么除
l
l
l外的
n
−
1
n-1
n−1个数的方法就为
f
(
n
−
2
)
f(n-2)
f(n−2)
(n
−
1
n-1
n−1个数放在不同的位置,有
n
−
1
n-1
n−1种方法)
- 不把
l
l
l放在原位上:那么对于剩余的
n
−
1
n-1
n−1个数就可以放在任何位,那么就是
f
(
n
−
1
)
f(n-1)
f(n−1)种方法(同
n
n
n个数分别放在不同的位置,不放在原位的就是
l
l
l)
那么我们就很容易可以得出递推式:
f
(
i
)
=
{
f
(
1
)
=
0
f
(
2
)
=
1
f
(
i
)
=
(
n
−
1
)
∗
(
f
(
n
−
1
)
+
f
(
n
−
2
)
)
(
i
>
2
)
f(i) = \left\{\begin{matrix} &~~~~~~~f(1) = 0~~~~~~~~~f(2) = 1~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \\ & f(i) = (n - 1) * (f(n-1)+f(n-2)) ~~~~~~~~~~~(i>2)\\ \end{matrix}\right.
f(i)={ f(1)=0 f(2)=1 f(i)=(n−1)∗(f(n−1)+f(n−2)) (i>2)
Code
小小的提醒:
20
20
20的数据也要开
l
o
n
g
long
long
l
o
n
g
long
long
#include <cstdio>
#include <iostream>
#define ll long long
using namespace std;
ll n, ans, a[25];
int main ()
{
scanf ("%lld", &n);
a[2] = 1;
for (int i = 3; i <= n; ++ i)
a[i] = (i - 1) * (a[i - 1] + a[i - 2]);
printf ("%lld", a[n]);
return 0;
}
[递推] A. 【例题1】错排问题的更多相关文章
- HDU 2068 RPG的错排
要求答对一半或以上就算过关,请问有多少组答案能使他顺利过关. 逆向思维,求答错一半或以下的组数 1,错排 错排公式的由来 pala提出的问题: 十本不同的书放在书架上.现重新摆放,使每本书都不在原来放 ...
- 致初学者(四):HDU 2044~2050 递推专项习题解
所谓递推,是指从已知的初始条件出发,依据某种递推关系,逐次推出所要求的各中间结果及最后结果.其中初始条件或是问题本身已经给定,或是通过对问题的分析与化简后确定.关于递推的知识可以参阅本博客中随笔“递推 ...
- HDU 2048:神、上帝以及老天爷(错排公式,递推)
神.上帝以及老天爷 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- ACM_错排(递推dp)
RPG的错排 Time Limit: 2000/1000ms (Java/Others) Problem Description: 今年暑假GOJ集训队第一次组成女生队,其中有一队叫RPG,但做为集训 ...
- 错排-HDU 2049 递推的应用
当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用M(n)表示,那么M(n-1)就表示n-1个编号元素放在n-1个编号位置,各不对应的方法数,其它类推. 第一步,把第n个元素放在一个 ...
- 不容易系列之一(hdu1465)错排+递推
不容易系列之一 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- HDU 2048 神、上帝以及老天爷 【递推】【错排】
题目链接 Problem Description HDU 2006'10 ACM contest的颁奖晚会隆重开始了!为了活跃气氛,组织者举行了一个别开生面.奖品丰厚的抽奖活动,这个活动的具体要求是这 ...
- 神、上帝以及老天爷--hdu2048(错排,递推)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2048 1. N张字条的所有可能排列自然是N!(分母). 现在的问题就是求N张字条的错排数f(N)(分子 ...
- hdu2068-RPG的错排-(dp递推式)
去年看错排公式,死都看不懂,基础扎实之后再来看就略懂了. 公式: dp[ n ] = ( n-1 ) * ( dp[n-1] + dp[n-2] ) 解析公式:比如有n个元素,各对应n个正确位置,dp ...
随机推荐
- qrcode & console.log
qrcode & console.log image https://fs-api.lightyy.com/service/utils/qrcode?url=http://169.254.13 ...
- SVG 场馆图
SVG 场馆图 https://www.infoq.cn/article/1BVg9VDSmqyHv3W3TeNH https://mp.weixin.qq.com/s/aNPAfJIHL14NFtL ...
- BGV再度爆发,流通市值破500万美金!
BGV似乎以超乎寻常的姿态,开启了爆发的模式.这两天,BGV一路上涨,日内最高涨至548.78美金,24小时成交额达到了98.07万美金,24小时成交量达到1844.93枚BGV,流通市值更是突破了5 ...
- Recycle 只显示一行BUG
学习Recycle 两天了,照着网上的Adapter写了2个Demo,结果测试的时候发现,第一个Demo 显示.点击都正常,第二个Demo的Adapter合第一个一模一样,仅仅是类名不同,结果显示的时 ...
- m1款MacBook Air 使用3个月总结及原生运行于apple架构软件推荐
前言 我之前一直是一个坚定的Windows/Android党,大学的时候用过几台iPhone,感觉也就那样.这次m1版本的Mac一发布我直接又转回apple阵营了,11月份的时候官网订了一台m1 版本 ...
- 深入理解 Web 协议 (三):HTTP 2
本篇将详细介绍 HTTP 2 协议的方方面面,知识点如下: HTTP 2 连接的建立 HTTP 2 中帧和流的关系 HTTP 2 中流量节省的奥秘:HPACK 算法 HTTP 2 协议中 Server ...
- 【Notes_2】现代图形学入门——向量与线性代数
向量与线性代数 点乘和叉乘 Dot Multiplication 点乘在图形学的应用 (1) 求两个向量之间的夹角: $$\cos(\theta) = \frac{(\vec{a} \cdot \ve ...
- Gym100923H Por Costel and the Match
题目链接:http://codeforces.com/gym/100923/problem/H 分析:并查集,用enemy储存x的敌人,用weight储存权重决定根节点 需用scanf和puts输入输 ...
- Webpack 基石 tapable 揭秘
Webpack 基于 tapable 构建了其复杂庞大的流程管理系统,基于 tapable 的架构不仅解耦了流程节点和流程的具体实现,还保证了 Webpack 强大的扩展能力:学习掌握tapable, ...
- WNN48T6X 54端口国产化万兆交换机
WNN48T6X是基于盛科CTC5160设计的国产化三层万兆交换机,提供48路千兆电口和6路万兆光口,采用龙芯 2K1000处理器,支持双冗余可插拔电源供电.支持常规的L2/L3协议,支持Telnet ...