Leetcode 數字序列翻譯

2021-10-24 09:14:01 字數 846 閱讀 6595

有一種將字母編碼成數字的方式:'a'->1, 'b->2', ... , 'z->26'。

現在給一串數字,返回有多少種可能的解碼結果

示例1複製

"12"
複製

2
2種可能的解碼結果(」ab」 或」l」)
思路:

對於乙個字元,分析其能否單獨翻譯成乙個單詞,以及能否組合翻譯成乙個單詞

特別的:  對於含有0的數字,其只能夠與前面的1或2組合成 「10」 或 「20」

易錯點:對於多個連續0 將無法翻譯   對於   「210」   其只能翻譯成 「2」 「10」

基本做法:

設定bool  can陣列  標記出只能組合的數字為false   即  遇到0時,判斷前面是否為1 或 2   

將這連續的兩個位置標記為    can[i-1]=false    can[i]=false

採用dfs 統計總數,

①對於num[i]  若其為can[i]=true  那麼可以單獨翻譯=》dfs(depth+1)  

進一步分析其能否與後面乙個組合翻譯(i+1②對於num[i] 其can[i]=false  說明只能組合翻譯(「10」 「20」情況)  =》dfs(depth+2)

bool can[1000];

int count=0;

int solve(string nums)

void dfs(string& num,int depth)

//研究單獨乙個單詞能否組合

if(can[depth]==true)

else //那麼這個單詞只能組合使用

}

Number Sequence 數字序列

一 杭電原題摘錄 二.題目分析 很容易就能想到遞迴,但是超出記憶體 int fac int a,int b,int n 超出記憶體 因為f n 的值要對7取餘,所以不難想到f n 的值可能存在週期.那我們就去找週期,看是否存在?週期不就是一直重複t個數,那麼我們就說這組數存在週期,且為t.在這個問題...

解碼數字序列

問題 大意 指定26個字元的編碼方式,即a對應1,b對應2,以此類推,z對應26,現出一串數字序列,問有多少種方式能對其進行解碼 實際上是乙個簡單的動態規劃,設s是我們要解碼的數字序列,令dp i 表示s i,s.length 有多少種解碼方式,則狀態方程為 if s i 0,dp i 0 else...

程式設計題 數字序列

信服君最近在研究一種有趣的數字串,例如11135917171513 你可能發現了,除了開始的三個數字為1以外,後面的數字均由三位數字相加得到,現在信服君想知道在給定任意起始三個數字後,第n位是多少。輸入描述 首行輸入乙個整數t 1 t 1000 表示有t組資料,每組資料給出四個數字a b c n其中...