码迷,mamicode.com
首页 > 其他好文 > 详细

动态规划 ---- 最长回文子串

时间:2020-02-01 14:21:19      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:include   string   更新   max   getline   height   style   img   长度   

技术图片

 

 分析:

技术图片

 

 技术图片

 

 技术图片

 

 完整代码:

 1 #include <stdio.h>
 2 #include <iostream>
 3 #include <cstring>
 4 using namespace std;
 5 
 6 const int maxn = 1010;
 7 char S[maxn];
 8 int dp[maxn][maxn];
 9 
10 int main()
11 {
12     cin.getline(S, 1010);
13     int len = strlen(S), ans = 1;
14     memset(dp, 0, sizeof(dp));            // dp数组初始化为0
15     // 边界
16     for (int i = 0; i < len; i++){
17         dp[i][i] = 1;
18         if (i < len - 1){
19             if (S[i] == S[i + 1]){
20                 dp[i][i + 1] = 1;
21                 ans = 2;            // 初始化是注意当前最长回文子串长度
22             }
23         }
24     }
25     // 状态转移方程
26     for (int L = 3; L <= len; L++){        // 枚举子串的长度
27         for (int i = 0; i + L - 1 < len; i++){        // 枚举子串的起始端点
28             int j = i + L - 1;        // 子串的右端点
29             if (S[i] == S[j] && dp[i + 1][j - 1] == 1){
30                 dp[i][j] = 1;
31                 ans = L;        // 更新最长回文子串的长度
32             }
33         }
34     }
35 
36     printf("%d\n", ans);
37 
38     return 0;
39 }

 

动态规划 ---- 最长回文子串

标签:include   string   更新   max   getline   height   style   img   长度   

原文地址:https://www.cnblogs.com/hi3254014978/p/12248226.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!