L2 008 最長對稱子串

2021-08-08 05:35:26 字數 1003 閱讀 7127

時間限制

100 ms

記憶體限制

65536 kb

**長度限制

8000 b

判題程式

standard

作者 陳越

對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定"is pat&tap symmetric?",最長對稱子串為"s pat&tap s",於是你應該輸出11。

輸入格式:

輸入在一行中給出長度不超過1000的非空字串。

輸出格式:

在一行中輸出最長對稱子串的長度。

輸入樣例:

is pat&tap symmetric?
輸出樣例:
11

思路分析:

使用動態規劃的思想解決。dp[i][j]表示i到j之間的字串是否是對稱的。

狀態轉移:若str[i] == str[j],則dp[i][j] = dp[i+1][j-1],否則dp[i][j] = 0。

邊界條件:dp[i][i] = 1; 若str[i] == str[i+1] 則 dp[i][i+1] = 1,否則dp[i][i+1]=0;

按照字串長度及左端點i從小到大來列舉子串並求解dp(不能按照左右端點i j從小到大的順序列舉,因為這樣計算時,不能保證要用的dp值已提前求出來)

題解:

#include #include using namespace std;

const int max = 1010;

string str;

int dp[max][max] = , ans = 1;

int main()

} }for(int l = 3; l <= str.length(); l++)

} }printf("%d\n", ans);

return 0;

}

L2 008 最長對稱子串

時間限制 100 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定 is pat tap symmetric?最長對稱子串為 s pat tap s 於是你應該輸出11。輸入格式 輸入在一行...

L2 008 最長對稱子串

對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定 is pat tap symmetric?最長對稱子串為 s pat tap s 於是你應該輸出11。對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定 is pat tap symmetric?最長對稱子串為 s pat tap ...

L2 008 最長對稱子串

原題 這道題可真是把我累的夠嗆,一開始是方法錯了,後來是題目定義不清晰理解錯誤,最後終於在第12次提交成功,廢話不說,總結如下 1.對稱,就是倒置之後還是不變,例如 aba 顛倒後還是 aba 所以思路就是,把原字串s1倒置過來,變成s2,然後求s1和s2最長公共子串 2.因為s1倒置過來變成s2,...