POJ1671

问题重述:

本题求解一首N行诗可能的押韵结构的数目。所谓押韵结构,指的是指定的行数之间必须押韵。例如一首3行诗的押韵结构可以是aaa, aab, aba, baa, abc 5种(aaa表示三行都押韵,aab则表示一二行押韵,abc则表示三行都不押韵)。

分析:

本题可采用动态规划求解。令dp[i][j]表示i行诗拥有j个押韵行集的押韵结构数目(押韵行集:例如aab就是拥有2个押韵行集)。则有递归公式:dp[i][j] = dp[i - 1][j - 1] + j * dp[i - 1][j]

1)  假如第i行与上面i – 1行都不押韵,则第i行只有一种选择,共有dp[i - 1][j - 1]种结构

2)  假如第i行属于上面i – 1行中的某个押韵行集,则有j种选择,共有j * dp[i - 1][j]种结构

AC代码:

  1. //Memory: 224K Time: 0MS
  2. #include <iostream>
  3. #include <cstring>
  4. #include <cstdio>
  5.  
  6. using namespace std;
  7.  
  8. ;
  9. double dp[maxn][maxn];
  10. int n;
  11.  
  12. void dynamic()
  13. {
  14. memset(dp, , sizeof(dp));
  15. dp[][] = ;
  16. ; i <= maxn; i++) {
  17. ; j--) {
  18. dp[i][j] = dp[i - ][j - ] + j * dp[i - ][j];
  19. }
  20. }
  21. }
  22.  
  23. int main()
  24. {
  25. dynamic();
  26. while (scanf("%d", &n) && n) {
  27. ;
  28. ; i <= n; i++) {
  29. ans += dp[n][i];
  30. }
  31. printf("%d %.0llf\n", n, ans);
  32. }
  33. ;
  34. }

POJ1671 动态规划的更多相关文章

  1. 增强学习(三)----- MDP的动态规划解法

    上一篇我们已经说到了,增强学习的目的就是求解马尔可夫决策过程(MDP)的最优策略,使其在任意初始状态下,都能获得最大的Vπ值.(本文不考虑非马尔可夫环境和不完全可观测马尔可夫决策过程(POMDP)中的 ...

  2. 简单动态规划-LeetCode198

    题目:House Robber You are a professional robber planning to rob houses along a street. Each house has ...

  3. 动态规划 Dynamic Programming

    March 26, 2013 作者:Hawstein 出处:http://hawstein.com/posts/dp-novice-to-advanced.html 声明:本文采用以下协议进行授权: ...

  4. 动态规划之最长公共子序列(LCS)

    转自:http://segmentfault.com/blog/exploring/ LCS 问题描述 定义: 一个数列 S,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则 ...

  5. C#动态规划查找两个字符串最大子串

     //动态规划查找两个字符串最大子串         public static string lcs(string word1, string word2)         {            ...

  6. C#递归、动态规划计算斐波那契数列

    //递归         public static long recurFib(int num)         {             if (num < 2)              ...

  7. 动态规划求最长公共子序列(Longest Common Subsequence, LCS)

    1. 问题描述 子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 cnblogs belong 比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与 ...

  8. 【BZOJ1700】[Usaco2007 Jan]Problem Solving 解题 动态规划

    [BZOJ1700][Usaco2007 Jan]Problem Solving 解题 Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地 ...

  9. POJ 1163 The Triangle(简单动态规划)

    http://poj.org/problem?id=1163 The Triangle Time Limit: 1000MS   Memory Limit: 10000K Total Submissi ...

随机推荐

  1. EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0)

    EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0) 原因:重复的release了某个对象

  2. Android开发的体会

    View Functionality--------------->逻辑 Data----------------------->实体,包括从View.Net.其他对象比如Location ...

  3. IntelliJ IDEA: maven & jetty 开发 java web

    之前使用eclipse + maven + jetty开发java web应用,本着no zuo no gain的想法, 折腾了一下Intellj idea下开发环境的搭建,顺带学习了maven re ...

  4. 如何使用git创建项目,创建分支

    git config -global user.name "Your name" git config -global user.email "you@example.c ...

  5. 深入浅出Node.js (8) - 构建Web应用

    8.1 基础功能 8.1.1 请求方法 8.1.2 路径解析 8.1.3 查询字符串 8.1.4 Cookie 8.1.5 Session 8.1.6 缓存 8.1.7 Basic认证 8.2 数据上 ...

  6. poj1284:欧拉函数+原根

    何为原根?由费马小定理可知 如果a于p互质 则有a^(p-1)≡1(mod p)对于任意的a是不是一定要到p-1次幂才会出现上述情况呢?显然不是,当第一次出现a^k≡1(mod p)时, 记为ep(a ...

  7. iOS - Usage of NSData

    Reference link : https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/BinaryData/T ...

  8. membership source code

    You can find their source code in codeplex at the ASP.NET source code. ExtendedMembershipProvider: h ...

  9. 使用css框架的优缺点

    使用css框架的优点 1.加速开发 CSS框架提供通用的代码(如reset,和移动端开发的一些常用设置)和许多丰富的UI组件样式——因此我们不需要从头开始写. 2.无兼容性烦恼 CSS框架解决了各个浏 ...

  10. python高级编程:有用的设计模式3

    # -*- coding: utf-8 -*-__author__ = 'Administrator'#python高级编程:有用的设计模式#访问者:有助于将算法从数据结构中分离出来"&qu ...