A1040 Longest Symmetric String(最大回文子串)
2019-08-19 17:31
148 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_44761480/article/details/99741852
- 如果数组过大(如1000*1000),一定要定义在函数外面。
- fgets(),读入的最后一个元素是’\n’
char s[MaxN]; fgets(s,MaxN,stdin);
#include <iostream> #include <string> #include <set> #include <map> #include<queue> #include<stack> #include<algorithm> #include<stdio.h> //new and delete //A1040 Longest Symmetric String using namespace std; const int MaxN = 1001; const int Inf = 0x3fffffff; void PrintM(int a[][MaxN], int N) { cout <<"数组:"<< endl; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) cout << a[i][j] << " "; cout << endl; } cout << endl; } //dp方法找最长回文子串 int dp[MaxN][MaxN] = { 0 }; //Longest Symmetric String, return its length int LSS(char s[]) { int N; //字符串长度 int i = 0; while (s[i] != '\n') //fgets()把'\n'也读进去了 i++; N = i; //边界 for (int i = 0; i < N; i++) { dp[i][i] = 1; if (s[i] == s[i+1]) dp[i][i + 1] = 1; } //PrintM(dp, N); //长度>=2 for (int L = 2; L < N; L++) { for (int i = 0; i < N-L; i++) { if (s[i] == s[i + L]) dp[i][i + L] = dp[i + 1][i + L - 1]; else dp[i][i + L] = 0; } } //PrintM(dp, N); int MAX = 1; for (int i = 0; i < N; i++) for (int j = i; j < N; j++) { if(dp[i][j]!=0) MAX = max(MAX, j-i+1); } return MAX; } int main() { char s[MaxN]; fgets(s,MaxN,stdin); //scanf("%s", &s); LSS(s); int ans=LSS(s); printf("%d\n", ans); return 0; }
相关文章推荐
- PAT_1040: Longest Symmetric String
- pat1040 Longest Symmetric String
- pat 1040 Longest Symmetric String
- Longest Palindromic Substring(字符串的最大回文子串)
- [字符串]PAT1040 Longest Symmetric String
- PAT 1040 Longest Symmetric String
- 1040 Longest Symmetric String
- 1040 Longest Symmetric String (25 分)
- 1040 Longest Symmetric String
- 1040. Longest Symmetric String
- 1040. Longest Symmetric String
- Pat(Advanced Level)Practice--1040(Longest Symmetric String)
- PAT 甲级 1040 Longest Symmetric String (25 分)
- PAT1040 Longest Symmetric String
- 1040. Longest Symmetric String
- PAT 1040 Longest Symmetric String
- 1040. Longest Symmetric String (25)
- PAT (Advanced Level) Practise 1040 Longest Symmetric String (25)
- PAT (Advanced Level) Practise 1040 Longest Symmetric String (25)
- PAT1040:Longest Symmetric String