1. 程式人生 > >【DP】遞推【91. Decode Ways】

【DP】遞推【91. Decode Ways】

class Solution {
public:
    int numDecodings(string s) {
        int len=s.size();
        if(len==0||s[0]=='0') return 0;
        vector<int> dp(len);
        dp[0]=1;
        for(int i=1;i<len;i++){
            //  新增一個數是0;
            if(s[i]=='0'){
                if(s[i-1]=='0'||s[i-1]>'2') return 0;
                else dp[i]=(i==1?1:dp[i-2]);
            }else{
            //  新增一個數不是0;
                //  前一個數不是0;
                if(s[i-1]!='0'){
                    if(s[i-1]=='1'||(s[i-1]=='2'&&s[i]<'7')) dp[i]=(i==1?2:dp[i-1]+dp[i-2]);   //  可合成
                    else dp[i]=dp[i-1];
                }else{
                //  前一個數是0;
                    dp[i]=dp[i-1];
                }
            }
        }
        return dp[len-1];
    }
};


相關推薦

DP91. Decode Ways

class Solution { public: int numDecodings(string s) { int len=s.size(); if(len=

51nod 1020 逆序排列Dp+思維優化好題!好題!好題!

基準時間限制:2 秒 空間限制:131072 KB 分值: 80 難度:5級演算法題 在一個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為一個逆序。一個排列中逆序的總數就稱為這個排列的逆序數。 如2 4 3 1中,2

UVa 825簡單dp

space 遞推 log 題目 logs .org str eof scan UVa 825 題意:給定一個網格圖(街道圖),其中有一些交叉路口點不能走。問從西北角走到東南角最短走法有多少種。(好像沒看到給數據範圍。、。) 簡單的遞推吧,當然也就是最簡單的動歸了。顯然最短路

BZOJ 1677 [Usaco2005 Jan]Sumsets 求和:dp 無限背包 / 2的冪次方之和

zoj mem iostream memset bzoj -1 target ont 背包 題目鏈接:http://www.lydsy.com/JudgeOnline/problem.php?id=1677 題意:   給定n(n <= 10^6),將n分解為2的冪次

U21729數列

tdi n-2 operator 使用 $1 遞推 continue += its 已知數列 $f$ 滿足 $$ f(0) = 0, f(1) = 1, f(n) = f(n-1) + 3f(n-2) $$ 有 $t = {10} ^ 5$ 組詢問,每次給定非負整數 $n

1002. [FJOI2007]輪狀病毒找規律+

stream istream tdi data urn 打表 pan www void Description   輪狀病毒有很多變種,所有輪狀病毒的變種都是從一個輪狀基產生的。一個N輪狀基由圓環上N個不同的基原子 和圓心處一個核原子構成的,2個原子之間的邊表示這2

java資料結構解決的漢諾塔問題

在學習資料結構的時候,遇到漢諾塔問題,就寫了自己的理解,希望對您有幫助。 package com.qxlx.six; /** * 遞推解決的漢諾塔問題 * * @author jia * */ public class TowerApp { public

LeetCode91. Decode Ways(C++)

地址:https://leetcode.com/problems/decode-ways/ 題目: A message containing letters from A-Z is being encoded to numbers using the following mappin

leetcode -- 516. Longest Palindromic Subsequence角度,問題的表示,資料結構

題目 Given a string s, find the longest palindromic subsequence's length in s. You may assume that the maximum length of s is 1000. Exampl

LeetCode91. Decode Ways

Description: A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' -> 1 'B' -> 2 .

51nod-1126 求序列的第N項

有一個序列是這樣定義的:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. 給出A,B和N,求f(n)的值。

HDU-5119 Happy Matt Friends (背包DP枚舉)

思路 ring 滾動 style 背包dp 異或 space spa 多少 題意:n個物品,第i個物品的權值為ki,選出一些物品使它們的異或不小於m,求有多少種方案 數據範圍:1 <= n <= 40,0 <= m <= 1e6 思路:其實就是換

leetcode 91. Decode Waysdp

題目:https://leetcode.com/problems/decode-ways/description/ 題意:讓你判斷字串可能有多少解碼方式 思路: 當前字元為’0’,則dp[i] = dp[i-2] 當前字元不為’0’,小於等於26,dp[i] = dp[i-1] + dp

DP動態規劃專題一 :LeetCode 91. Decode Ways

LeetCode 91. Decode Ways A message containing letters from A-Z is being encoded to numbers using the following mapping: ‘A’ -> 1 ‘B’ ->

HD 2048 數塔 DP(簡單

Problem Description 在講述DP演算法的時候,一個經典的例子就是數塔問題,它是這樣描述的: 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少? 已經告訴你了,這是個DP的題目,你能AC嗎? Inp

DP-----91. Decode Ways

原題目 確定子問題的時候一定要注意是往前還是往後推導。 本題中,假如是往後遞推的話就把每個數字當作是最後一個數字。但是經過實踐後發現是不可取的,因為在資料中會發現還有這個叫做0的東西。這個

leetcode 91. Decode Ways DP動態規劃 + 類似斐波那契序列 + DFS深度優先遍歷

A message containing letters from A-Z is being encoded to numbers using the following mapping: ‘A’ -> 1 ‘B’ -> 2 … ‘Z’ -&

91. Decode Ways

char lean ive ger val n+1 pin category 更多 題目: A message containing letters from A-Z is being encoded to numbers using the following mappi

Leetcode 91. Decode Ways 解碼方法(動態規劃,字符串處理)

範圍 解碼 length emp 添加 substr temp 字母 decode Leetcode 91. Decode Ways 解碼方法(動態規劃,字符串處理) 題目描述 一條報文包含字母A-Z,使用下面的字母-數字映射進行解碼 'A' ->