POJ2033 动态规划

原创 2016年08月31日 08:42:05

一共三种状态:

1。当前数是0的话,只能和之前的数组合,dp[i]=dp[i-2]; 例如11110: 111   10

2。当前不为0,之前的数不为0并且组合产生的字母不超出范围(11-26),说明这个数既可以和之前组合,也可以不组合,dp[i]=dp[i-2]+dp[i-1]  例如1111有两种分割:

11    11  ,111   1

3。当前数不为0,但之前的数为0,之前的数不能和当前数组合,dp[i]=dp[i-1]; 例如:11101:1110   1


dp[0],dp[1]是边界。


十分感谢你的代码和注释。

#include"stdio.h"
#include"iostream"
#include"algorithm"
#include"string"
using namespace std;
typedef long long ll;
const int maxn=50001;
ll dp[maxn];
int main()
{
    string a;
    while(cin>>a)
    {
        if(a[0]=='0')break;
        dp[0]=1;int len=a.size();
        for(int i=1;i<len;i++)
        {
            int num1=a[i]-48;int num2=a[i-1]-48;int num=num1+num2*10;
            if(num1==0)
            {
                if(i==1) dp[i]=1;
                else dp[i]=dp[i-2];
            }
            else
            {
                if(num>=11&&num<=26)
                {
                    if(i==1) dp[i]=2;
                    else dp[i]=dp[i-1]+dp[i-2];
                }
                else
                    dp[i]=dp[i-1];
            }
        }
        cout<<dp[len-1]<<endl;
    }

}


版权声明:本文为博主原创文章,未经博主允许不得转载。

动态规划分析总结——如何设计和实现动态规划算法

进行算法设计的时候,时常有这样的体会:如果已经知道一道题目可以用动态规划求解,那么很容易找到相应的动态规划算法并实现;动态规划算法的难度不在于实现,而在于分析和设计—— 首先你得知道这道题目需要用动态...
  • trochiluses
  • trochiluses
  • 2014年07月19日 19:13
  • 8888

ACM动态规划总结(by utobe67)

动态规划一直是ACM竞赛中的重点, 也是难点(对于我这种水平),因为该算法时间效率高,代码量少,多元性强、灵活度高,主要考察思维能力、建模抽象能力。学了这么久动态规划,虽然还只是个菜菜= =,但还是想...
  • u010228612
  • u010228612
  • 2015年01月17日 15:19
  • 4135

动态规划的简要总结和四个经典问题的c++实现

本文给出了动态规划的简要定义、适用场景、算法实现。并给出了四种经典动态规划:钢条切割求最大收益问题、矩阵链相乘求最小乘法次数问题、最长公共子序列问题、求最小的搜索代价的最优二叉搜索树的c++代码实现。...
  • quzhongxin
  • quzhongxin
  • 2015年06月22日 10:28
  • 4016

poj经典动态规划题目解题报告

  • 2008年03月23日 19:09
  • 539KB
  • 下载

poj 1784 Huffman's Greed 动态规划四边形加速求最优二叉搜索树

题意: 给二叉搜索树的内部节点p1,p2...pn和外部节点q0,q1,..qn,求一棵比较数期望最小的二叉搜索树,输出期望。 分析: n^3的动态规划很容易想到,方程满足四边形优化的条件,可优化的n...
  • sepNINE
  • sepNINE
  • 2015年09月20日 06:12
  • 1089

POJ 1050 To the Max(动态规划-最大子段和)

To the Max Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 49148 ...
  • yiya_eryi
  • yiya_eryi
  • 2017年07月13日 18:30
  • 64

《挑战程序设计竞赛》3.4.1 动态规划-状态压缩DP POJ3311 2686 2411 2441 3254 2836 1795 3411(2)

POJ3311 旅行商问题http://ac.jobdu.com/problem.php?pid=3311题意给一个起点和终点相同的图,一个矩阵表示各个点之间的距离,求经过所有的点,回到原点的最下路径...
  • thudaliangrx
  • thudaliangrx
  • 2016年01月06日 22:22
  • 731

POJ 2533 最长上升子序列 [动态规划 + 二分搜索]

题干DescriptionA numeric sequence of ai is ordered if a1 < a2 < … < aN. Let the subsequence of the giv...
  • micsay
  • micsay
  • 2016年07月29日 15:50
  • 120

poj-1322-Chocolate 使用动态规划求解的一种概率问题的算法

题目大意是说现有c种颜色的巧克力放在盒子里,每次可以从中取出一颗放在桌子上,每次取到每种颜色巧克力的概率是相同的(即1/c),如果刚取出的这颗的颜色与桌子上已有的某个巧克力的颜色相同,那么就把这两颗都...
  • u011044871
  • u011044871
  • 2013年11月12日 21:16
  • 1144

POJ 1050 To the Max(动态规划、最大子矩阵和)

//poj 1050 - dp //2014-6-11 #include #include #include using namespace std; const int MAX_N = 111...
  • u011044487
  • u011044487
  • 2014年06月11日 13:36
  • 484
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ2033 动态规划
举报原因:
原因补充:

(最多只允许输入30个字)