51NOD 1092 回文字串 LCS

2022-05-16 02:20:53 字數 529 閱讀 6639

q:給定乙個串,問需要插入多少字元才能使其成為回文串,也就是左右對稱的串。

經典求lcs題,即最長公共子串行,不用連續的序列。考慮o(n2)解法,求lcs起碼得有兩個串,題中才給了乙個串,另乙個需要自己造,將給定的串反置,然後求這兩個串的lcs。假設兩個串為str1和str2,想辦法將規模降低,分兩種情況考慮:

這其實就是用小規模來推出稍大規模的解,也就是dp思想了。所求得的lcs就是最長回文子串行的長度了,沒有包含在lcs中的字元都是需要為它們插入乙份拷貝的。答案自然就是size-lcs

#include using namespace std;

const int n = 1005;

int dp[n][n];

char str[n], cpy[n];

int maxmirrorseq(char *sp, int size)

}return ans;

}int main()

return 0;

}

51nod 1092 回文字串

1092 回文字串 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 收藏 關注 回文串是指aba abba cccbccc aaaa這種左右對稱的字串。每個字串都可以通過向中間新增一些字元,使之變為回文字串。例如 abbc 新增2個字元可以變為 acbbca,也可...

51nod 1092 回文字串

題解 本題要求的是求最小新增的數,那麼可以進行反向的思考,直接算最大的公共長度,然後用總長度 最的公共長度之後,就是答案了。include include include include include using namespace std const int maxn 1000 10 defin...

51nod 1092 回文字串

1092 回文字串 難度 2級演算法題 回文串是指aba abba cccbccc aaaa這種左右對稱的字串。每個字串都可以通過向中間新增一些字元,使之變為回文字串。例如 abbc 新增2個字元可以變為 acbbca,也可以新增3個變為 abbcbba。方案1只需要新增2個字元,是所有方案中新增字...