题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1625

题目大意:将n个数重新排列,使得每个数的前一个数都不能和之前的一样,求一共有多少种排列方法

ample Input:

3
4

Sample Output:

3
11

分析:

  CrazyAC's 解题报告:
  本题一道DP题 仔细想想不难的
  首先我们确定状态F[N]表示所产生的新排列的情况数
  那么F[N]=f(F[N-1]) 怎么来确定他呢?
  由于F[N-1]是排好了;所以只要把N往里插,唯一不可插的地方就是N-1后;所以共有N-1情况,
  那么F[N]=(N-1)*F[N-1] (1)似乎这个式子就对了 但是自己手写几组数据是不对的 郁闷中啊~~~
  但仔细想想肯定是漏情况了 在哪呢?原来是在我们已经排除的那些组合里,举个例子:N=3
  是有3种排列:1 3 2;2 1 3;3 2 1
  那么N=4 时,如果只考虑1 3 2;2 1 3;3 2 1这3种就少情况了,原因出在2 3 1;3 1 2这两
  个排列没考虑;只要在2 3 1中的2 3之间插4,在3 1 2中的1 2之间插4即可;由此可以发现
  在(1)中要加一个参数g(N-1)其表示在N-1个数的排列中,有唯一一对原顺序的排列情况
  g(N)如何确定?我们只要用捆绑一对数的思想就可以;举个例子:把1 2 3 4 5 6中的2 3看 
  成一个数其等价与1 2 3 4 5,所以g(N)=h(F[N-1]),由于捆绑对数就是N-1,就是(1 2 ,2 3, 3 4...)
  那么g(N)就确定了:g(N)=(N-1)*F[N-1];所以完成状态方程:F[N]=(N-1)*F[N-1]+(N-2)*F[N-2];
  注意边界条件F[0]=0 F[1]=0 F[2]=1 F[3]=3(要用大数)

代码如下:

 #include <stdio.h>
#include <string.h> int f[][]; void add(int a,int b,int c){
int i,car=,k;
for(i=;i<=;i++){
k=b*f[b][i]+c*f[c][i]+car;
f[a][i]=k%;
car=k/;
}
} void DP(){
int i;
memset(f,,sizeof(f));
f[][]=;
f[][]=;
f[][]=;
f[][]=;
for(i=;i<=;i++){
add(i,i-,i-);
}
} int main()
{
int i,j,n;
DP();
while(scanf("%d",&n)!=EOF){
if(n== || n==){
printf("0\n");
continue;
}
for(i=;i>=;i--)
if(f[n][i]) break;
for(j=i;j>=;j--)
printf("%d",f[n][j]);
printf("\n");
}
return ;
}

ZOJ 2625 Rearrange Them(DP)的更多相关文章

  1. ZOJ 4027 Sequence Swapping(DP)题解

    题意:一串括号,每个括号代表一个值,当有相邻括号组成()时,可以交换他们两个并得到他们值的乘积,问你最大能得到多少 思路:DP题,注定想得掉头发. 显然一个左括号( 的最远交换距离由他右边的左括号的最 ...

  2. ZOJ 2745 01-K Code(DP)(转)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1745 题目大意:一个串由N个字符组成,每个字符是‘0’或者是‘1’, ...

  3. ZOJ 1013 Great Equipment(DP)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=13 题目大意:说的是有三种不同的装备,分别是头盔,盔甲,战靴需要运输, ...

  4. ZOJ 3211 Dream City(DP)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3374 题目大意:JAVAMAN 到梦幻城市旅游见到了黄金树,黄金树上 ...

  5. ZOJ 2702 Unrhymable Rhymes(DP)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1702 题目大意:给定有很多数字组成的诗,譬如 “AABB”, “AB ...

  6. LightOJ 1033 Generating Palindromes(dp)

    LightOJ 1033  Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...

  7. lightOJ 1047 Neighbor House (DP)

    lightOJ 1047   Neighbor House (DP) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730# ...

  8. UVA11125 - Arrange Some Marbles(dp)

    UVA11125 - Arrange Some Marbles(dp) option=com_onlinejudge&Itemid=8&category=24&page=sho ...

  9. ZOJ 2477 Magic Cube(魔方)

    ZOJ 2477 Magic Cube(魔方) Time Limit: 2 Seconds      Memory Limit: 65536 KB This is a very popular gam ...

随机推荐

  1. 剑指OFFER之丑数(九度OJ1214)

    题目描述: 把只包含因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含因子7.习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 输入: 输 ...

  2. 手把手教你去ECSHOP版权 powered by ecshop

      各位朋友大家好,欢迎来到ecshop开发中心系列视频教程:ecshop去版权.去版权是一种很常见的问题,有很多客户提到ECSHOP如何去版权?怎样去得干净.去得彻底?今天,ECSHOP开发中心手把 ...

  3. 《JavaScript高级程序设计》 读书笔记(一)

    标签的位置 按照传统的做法,所有<script>元素都应该放在页面的<head>元素中,例如: <!DOCTYPE html> <html> <h ...

  4. C#-创建自定义双击事件

    .NET Compact Framework 不支持按钮的 Windows 窗体 DoubleClick 事件.但是您可以创建一个从 Button 类派生的控件来实现该事件. 创建自定义双击事件 创建 ...

  5. 并查集类的c++封装,比較union_find algorithm四种实现方法之间的性能区别

    问题描写叙述: 在计算机科学中,并查集是一种树型的数据结构,其保持着用于处理一些不相交集合(Disjoint Sets)的合并及查询问题.有一个联合-查找算法(union-find algorithm ...

  6. Config the Android 5.0 Build Environment

    In this document Choosing a Branch    Setting up a Linux build environment        Installing the JDK ...

  7. Qt界面设计1

    最近刚接触Qt 对于QML做界面感觉已经很轻松了,但是想尝试一下GUI..准备做一个理财的小软件 ....慢慢记录我的一点一滴的学习经历. 自己封装界面UI 遇到了好多新手级别的问题=_=!!! 1. ...

  8. mac中vmware tools进行磁盘压缩和vmware-tools-cli的使用方法

    前言: 高高兴兴的在vmware9.0中安装了mac10.8系统,然后学习iphone开发,但是发现下载的pdf都是基于xcode3.2.5的,又在10.8上面安装3.2.5,出现“五国”无法解决,最 ...

  9. 一、 Socket之UDP异步传输文件

    用SCOKET 发送文件是一个不太好处理的问题,网上的例子也都是很简单的,我准备写一个比较完善的例子,这个就算是开始吧,以后的都会在这个例子的基础上进行修改,准备实现多线程传输.断点传输和文件传输的完 ...

  10. Android(java)学习笔记127:Android Studio新建工程中的build.gradle、settings.gradle

    随着信息化的快速发展,IT项目变得越来越复杂,通常都是由多个子系统共同协作完成.对于这种多系统.多项目的情况,很多构建工具都已经提供了不错的支持,像maven.ant.Gradle除了借鉴了ant或者 ...