騰訊2016實習筆試題(最長回文子串行)

2021-07-11 07:48:14 字數 800 閱讀 6874

問題描述

回文串:首位相同的字串,如:abba   aca

回文序列:在字串裡面刪除乙個或多個字元,剩餘的字元組成回文串。如:abbceda    刪除"ced",剩餘abba組成回文序列

最長回文子串行:乙個字串裡面所有回文序列裡面,最長的序列。

//問題求解

//判斷回文字串很簡單,直接同時首尾遍歷字串,只要找到不相同的則不是回文字串

//容易想到的暴力解決辦法,先得到字串的所有子串行,然後判斷序列是否是回文串,並記錄長度

//從而得到最長的回文序列,但這種方式肯定是不可取的,

//假如原始字串長度為n,則其所有子串行個數為2^n,時間複雜度太高

//其實這個問題跟最長公共子串行問題類似,因此解決辦法也可以借鑑lcs求解。

//令lps(m, n)表示下標為m-1到n-1的字串的最長回文子串行長度,

//現在要求解lps(m, n+1)的最長回文子串行長度,如果下標m-1與n處相等,則lps(m, n+1) = lps(m+1, n)+2

//否則lps(m, n+1)就等於lps(m+1, n)與lps(m, n+1)的較大值。(思路與lcs基本一致)

//因此可以設計遞迴實現

#include #include using namespace std;

int lps_recu(string str, int m, int n) //表示求m到n的最長回文子串行長度 }

int _tmain(int argc, _tchar* argv)

騰訊筆試題 構造回文

題目 給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?輸出需要刪除的字元個數 輸入 輸入資料有多組,每組包含乙個字串s,且保證 1 s.length 1000.輸出 對於每組資料,輸出乙個整數,代表最少需要刪除的字元個數。案例輸入 abcda goog...

騰訊 2016屆實習生招聘筆試

乙個商場進行一場 活動,其中有兩個獎項,第乙個獎項a抽中的概率是1 6,第二個獎項b抽中的概率是5 6 用c語言編碼實現這個 程式。題目通過乙個xml文件給出。生成乙個隨機數 隨機數對6取餘,得到的餘數一定是0 1 2 3 4 5共六個數 將這六個數分成兩份 a和b 其中乙份只有0這乙個項,其餘乙份...

騰訊2016實習筆試 n階蛇形矩陣

題目描述 輸入乙個整數n,從上到下 從左到右列印n階蛇形矩陣。例如輸入整數4,輸出為 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 分析 生成乙個n階初始值為0的矩陣,從 0 0 位置開始依次向右 向下 向上 向左移動,每移動一次,填充乙個自增1的數。移動方向變化的條...