动态规划(二)——错位重排
2016-05-19 21:30
435 查看
简介
错位重排问题是伯努利和欧拉在错装信封时发现的,是比较有意思的发现这两家伙是有多无聊。一般的全错位排列问题研究这样的问题:1.给所有的容器和等量的物品标号。
2.将物品放到容器中,不允许容器放入自己标号的物品。
基于这样模型的问题就是错位重排问题。
模型的递推公式推导
为了coding方便,也根据DP的思想,我们设计递推公式来解决这个问题,同样地,我们使用F来表示n个物品的错排个数,下面我们可以分两步进行重排的操作,这里先贴一篇比较好的参考:错排公式
题目传送门:不容易系列
完全的重排模型。
上代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>
#include <algorithm>
#define N 31
using namespace std;
long F; //Êý¾Ý·¶Î§×¢Òâ
int main(){
//freopen("test.txt","r",stdin);
int n;
memset(F,0,sizeof(F));
F[0]=0;F[1]=0;F[2]=1;
for(int i=3;i<N;i++){
F[i]=(i-1)*(F[i-1]+F[i-2]);
}
while(scanf("%d",&n)!=EOF){
printf("%ld\n",F);
}
return 0;
}
本篇写的有点匆忙,过后继续补充。
相关文章推荐
- C++动态规划之最长公子序列实例
- C++动态规划之背包问题解决方法
- C#使用动态规划解决0-1背包问题实例分析
- 详解Android应用中屏幕尺寸的获取及dp和px值的转换
- 基于Android中dp和px之间进行转换的实现代码
- Android中dip、dp、sp、pt和px的区别详解
- 简单的四则运算
- 数的奇偶性
- ACMer博客瀑布流分析
- LFC1.0.0 版本发布
- 动态规划
- ACM程序设计大赛题目分类
- Android dpi,dip,dp的概念以及屏幕适配
- 计算字符串最后一个单词长度
- C++ 动态规划
- Android px、dp、sp之间相互转换
- ACM网址
- 1272 小希的迷宫
- 1272 小希的迷宫
- hdu 1250 大数相加并用数组储存