這個問題使用動態規劃求解,dp[i][j]表示字串下標為i的字元和下標為j的字元區間內構成回文所需加入的最少的字串。
當str[i]==str[j]時,則dp[i][j]=dp[i+1][j-1],當str[i]!=str[j]時,dp[i][j]=min(dp[i+1][j]+1,dp[i][j-1]+1),初始化時候,d[i][i]=0,d[i][i+1]=1(這裡真是糾結了乙個多小時,我還以為我轉移方程錯了!!!)。輸出dp[0][strlen(str)-1].
#include#include#includeusing namespace std;樣例輸出char str[1001];
int dp[1001][1001];
int main()
{ int cas;
cin>>cas;
while(cas--)
{cin>>str;
int l=strlen(str);
for(int i=0;i時間限制:3000 ms | 記憶體限制:65535 kb
難度:4
描述 所謂回文字串,就是乙個字串,從左到右讀和從右到左讀是完全一樣的,比如"aba"。當然,我們給你的問題不會再簡單到判斷乙個字串是不是回文字串。現在要求你,給你乙個字串,可在任意位置新增字元,最少再新增幾個字元,可以使這個字串成為回文字串。
輸入第一行給出整數n(0
輸出每行輸出所需新增的最少字元數
樣例輸入
1ab3bd
2**
ioi 2000
上傳者hzyqazasdf
南陽理工學院動態規劃專題 回文字串
這個問題使用動態規劃求解,dp i j 表示字串下標為i的字元和下標為j的字元區間內構成回文所需加入的最少的字串。當str i str j 時,則dp i j dp i 1 j 1 當str i str j 時,dp i j min dp i 1 j 1,dp i j 1 1 初始化時候,d i i...
南陽理工學院動態規劃專題 括號問題2 總結
南陽理工學院動態規劃專題括號問題2總結 這道題目初看起來很簡單,但是我從看題到思考,到做題ac足足花了乙個晚上加乙個下午的時間,我也有到網上找 的習慣,但是都是遞迴,特別蛋疼,我想用正統的動歸去做,於是就開始了不一樣的艱難探索之旅。分析過程 使用char str 1001 這個字元陣列儲存最初輸入的...
南陽理工學院ACM完全覆蓋
描述 有一天小董子在玩一種遊戲 用2 1或1 2的骨牌把m n的棋盤完全覆蓋。但他感覺遊戲過於簡單,於是就隨機生成了兩個方塊的位置 可能相同 標記一下,標記後的方塊不用覆蓋。還要注意小董子只有在m n的棋盤能被完全覆蓋後才會進行標記。現在他想知道 如果標記前m n的棋盤能被完全覆蓋,標記後的棋盤是否...