時間限制:
3000 ms | 記憶體限制:
65535 kb
難度: 4
描述 所謂回文字串,就是乙個字串,從左到右讀和從右到左讀是完全一樣的,比如"aba"。當然,我們給你的問題不會再簡單到判斷乙個字串是不是回文字串。現在要求你,給你乙個字串,可在任意位置新增字元,最少再新增幾個字元,可以使這個字串成為回文字串。
輸入第一行給出整數n(0
輸出每行輸出所需新增的最少字元數
樣例輸入
1ab3bd
樣例輸出
2
想法:動態規劃;
關鍵在於找動態轉移方程:
用data【i】【j】儲存從a【j】開始長度為i的字串變成回文字串所需插入字元個數。
if(a【j】==a【i+j-1】)
data【i】【j】=data【i-1】【j+2】;
else
data【i】【j】=min(data【i-1】【j】,data【i-1】【j+1】)+1;
**:
#include
#include
char a[1010];
int data[1010][1010];
int min(int i,int j)
int main()
{int n;
scanf("%d",&n);
while(n--)
{int i,j,n;
scanf("%s",a);
n=strlen(a);
memset(data,0,sizeof(data));//初始化
for(i=2;i<=n;i++)
for(j=0;j
ACM37 回文字串
時間限制 3000 ms 記憶體限制 65535 kb 難度 4描述 所謂回文字串,就是乙個字串,從左到右讀和從右到左讀是完全一樣的,比如 aba 當然,我們給你的問題不會再簡單到判斷乙個字串是不是回文字串。現在要求你,給你乙個字串,可在任意位置新增字元,最少再新增幾個字元,可以使這個字串成為回文字...
南陽理工 37《回文字串》 動態規劃
時間限制 3000 ms 記憶體限制 65535 kb 難度 4描述 所謂回文字串,就是乙個字串,從左到右讀和從右到左讀是完全一樣的,比如 aba 當然,我們給你的問題不會再簡單到判斷乙個字串是不是回文字串。現在要求你,給你乙個字串,可在任意位置新增字元,最少再新增幾個字元,可以使這個字串成為回文字...
題目37 回文字串
所謂回文字串,就是乙個字串,從左到右讀和從右到左讀是完全一樣的,比如 aba 當然,我們給你的問題不會再簡單到判斷乙個字串是不是回文字串。現在要求你,給你乙個字串,可在任意位置新增字元,最少再新增幾個字元,可以使這個字串成為回文字串。第一行給出整數n 0每行輸出所需新增的最少字元數 1 ab3bd ...