hdu1465 不容易系列之一 (递推方程)

本文出自:http://blog.csdn.net/svitter

题意:错排情况的数量,打表求错排数即可。

错排数公式:f [ n ] = ( n - 1 ) * ( f [ n - 1 ] + f [ n - 2] );

也可以这么想;

(1).f [ 1 ] = 0 ; f [ 2 ] = 1;

(2).如果确定f [ n - 1 ] 和 f [ n - 2 ] 的话。

、f [ n ] 中必然包含 f [ n - 1] * ( n - 1 )种情况。 即把新加入的一封和之前的任一一封交换,所得到的必然是错排。

、f [ n ] 中另一部分就是f [ n - 2 ] * ( n - 1 ) 即之前的 n - 1 封中有一封没有错排,把这封与新加入的一封交换进行错排。

可能有人提出疑问,两种情况不会有重叠的部分吗?答案是必然的。如果有重叠的部分,说明之前第一种情况中第n封信和之前的n - 1封信其中的一封a交换回来,n 对应n,a 对应 a, 显然与 n - 1封全是错排矛盾。

对了,hdu用%lld不过,注意一下。

#include <iostream>
#include <cstdio>
using namespace std;
#define lln long long int

lln f[21];

void ace()
{
    int i;
    f[1] = 0;
    f[2] = 1;
    for(i = 3; i < 21; i++)
    {
        f[i] = (i - 1) * (f[i - 1] + f[i - 2]);
    }
    int t;
    while(scanf("%d", &t)!= EOF)
    {
        printf("%I64d\n", f[t]);
    }
}

int main()
{
    ace();
    return 0;
}
时间: 2024-10-08 02:57:17

hdu1465 不容易系列之一 (递推方程)的相关文章

hdu2045 不容易系列三——LELE的RPG难题 (递推方程)

本文出自:blog.csdn.net/svitter 原题:http://acm.hdu.edu.cn/showproblem.php?pid=2045 题意:中文不用我说了吧. 这个题目的关键就在于递推方程--以及错误的测试数据 首先这个题目就是简单的置换群着色问题-- 去除了反转的问题,难一点的大家可以看P197(离散数学,高等教育出版社) 我在做这个题目的时候首先被f [ 1 ]  = 3 困扰了..拜托,根本不符合题意好吗- =一个格子能说是首尾颜色不同吗? 后来写错了递推方程--f [

递推方程的求解

递推方程的求解 其实这是本人<算法设计与分析>课程回顾的内容整理,用来测试一下cnblogs上的markdown和数学公式支持...... 什么是递推方程? 对于序列\(a_0,a_1,a_2, -,a_n\),简记为\({a_n }\),一个把\(a_n\)与若干个\(a_i (i<n)\)联系在一起的等式叫做关于序列\({a_n}\)的递推方程. 为什么要学习求解递推方程? 因为对递归算法的分析离不开递推方程的求解 例如,Hanoi塔问题递归算法为: Hanoi(A, C, n):

算法分析基础——差消法求解高阶递推方程

差消法,简单来讲,就是对高阶的递推方程作差,转化为一阶方程后再运用迭代法.有了迭代法的基础后,差消法理解起来就很容易了.这里举出对快速排序的分析加以说明. 对于快排,我们知道选择不同的轴值,会导致不同的算法效率.最坏的情况下,选取的轴值恰好是待排序数组的最值,那么排序的效率就会退化为线性时间.现在我们来估算平均情况下快速排序的时间复杂度. 设T(n)为待排序数组长度为n时,快速排序算法需要的比较次数.那么T(1) = 0,而T(n)的递推方程相对于轴值的选取有如下n种情况: T(n) = T(0

[ 9.26 ]CF每日一题系列—— 771B递推问题

Description: 给定你命名的规律,1-10个字符,开头必须大写,最多有50个名字,然后告诉你有n个人,判断区间长度为k,那么你将得到n - k + 1个答案(YES or NO) 表示1 - k,2 -k+1,n - K + 1-- n这些人里面是否没有重名,YES没有,NO有,让你推出一种名字的组合方式 Solution: 首先先跑出一个名字数组,这个题目要往后看,所以应该是从后往前推n - k + 2 到 n的名字没有要求,所以我们命名各不相同,从n - k + 1开始,如果是YE

uva live 4123 Glenbow Museum 数学递推

// uva live 4123 Glenbow Museum 数学递推 // // 题目大意: // // 对于一个边平行于坐标轴的多边形,我们可以用一个序列来描述,R和O,R表示 // 该顶点的角度为90度,O表示该定点的角度为270.给定序列的长度.问能由这些RO序 // 列组成的星型多边形(内部存在一个点可以看到所有的节点的多边形)的方法数有多少. // // 解题思路: // // 顶点数一定是序列的长度.n小于4无法组成多边形.n为奇数的时候也不行.设R的个数有 // x个,O的个数

1025 数的划分(搜索和递推方法)

难度:普及/提高- 题目类型:递推 提交次数:3 涉及知识:动规 题目描述 将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5; 1,5,1; 5,1,1; 问有多少种不同的分法. 输入输出格式 输入格式: n,k (6<n<=200,2<=k<=6) 输出格式: 一个整数,即不同的分法. 搜索: 代码: 1 #include<iostream> 2 using namespace std

递推专题笔记

递推说白了就是找规律,然后写出他的递推方程,有的还可以写出通项公式,然后准确预测出第n项的值.因为这种规律存在着前因后果的关系,即是说,后一项的结果往往和前一项或前几项有着某种联系.这种联系不仅仅存在于数字之中,世间万物亦是如此. 由于,递推是深入理解动态规划的基础,就我目前的水平,看到动态规划就如看到tiger一般,完全不知所以,所以为了找回在动态规划前的自信,我打算在回家之前,找一个递推专题练练手.现记录如下: 心得: 1. 既然是递推题,那么肯定有递推方程,那么同样有规律可循,既然有规律.

【基础练习】【贪心】【递推】NOIP2013提高组第五题 积木大赛题解

还是先把题目放上吧: 春春幼儿园举办了一年一度的"积木大赛".今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第n块积木的最终高度需要是hi. 在搭建开始之前,没有任何积木(可以看成n块高度为 0 的积木).接下来每次操作,小朋友们可以选择一段连续区间[L,R],然后将第L块到第R块之间(含第 L 块和第 R 块)所有积木的高度分别增加1. 小M是个聪明的小朋友,她很快想出了建造大厦的最佳策略,使得建造所需的操作次数最少.但她不是一个勤于动手的孩子,所以想

百度之星-大搬家-递推

问题描述: 近期B厂组织了一次大搬家,所有人都要按照指示换到指定的座位上.指示的内容是坐在位置ii上的人要搬到位置jj上.现在B厂有NN个人,一对一到NN个位置上.搬家之后也是一一对应的,改变的只有位次. 在第一次搬家后,度度熊由于疏忽,又要求大家按照原指示进行了一次搬家.于是,机智的它想到:再按这个指示搬一次家不就可以恢复第一次搬家的样子了.于是,B厂史无前例的进行了连续三次搬家. 虽然我们都知道度度熊的“机智”常常令人堪忧,但是不可思议的是,这回真的应验了.第三次搬家后的结果和第一次的结果完