最长对称子串
L2-008 最长对称子串
对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?
,最长对称子串为s PAT&TAP s
,于是你应该输出11。
输入格式:
输入在一行中给出长度不超过1000的非空字符串。
输出格式:
在一行中输出最长对称子串的长度。
动规
#include<bits/stdc++.h> using namespace std; char a[1010],b[1010]; int l,dp[1010][1010]; int LCS(char *s1,char *s2) { for(int i=1;i<l;i++) for(int j=1;j<l;j++) { if(s1[i]==s2[j]) dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=max(dp[i][j-1],dp[i-1][j]);//因为这里,所以前面ij不能为0。遇到不对劲的地方记得打印输出看看 } return dp[l-1][l-1]; } int main() { cin.getline(a,1010); l=strlen(a); for(int i=0;i<l;i++) { b[l-i-1]=a[i]; } printf("%d",LCS(a,b)); return 0; }
本来以为和密码脱落一样,结果只能过一个。
分析了一下:
密码脱落是最长公共子序列的题
这道题是最长对称子串
最长公共子序列是
B D C A B A 和 A B C B D A B
最长对称子串是
B D C A B A
所以正确代码如下
#include<bits/stdc++.h> using namespace std; char a[1010]; int maxlen,len; int main() { cin.getline(a,1010); int l=strlen(a); for(int i=0;i<l;i++) { len=1;//奇数情况下 for(int j=1;j<l;j++) { if(i+j>=l||i-j<0||a[i+j]!=a[i-j]) break; len+=2; } maxlen= max(len,maxlen); len=0;//偶数情况下 for(int j=1;j<l;j++) { if(i+j>=l||i-j+1<0||a[i+j]!=a[i-j+1]) break; len+=2; } maxlen= max(len,maxlen); } cout<<maxlen; return 0; }
还有字符串算法kmp啊,还没学会捏。
这道题还有马拉车算法,应该用不到,先记在这。
密码脱落
X星球的考古学家发现了一批古代留下来的密码。
这些密码是由A、B、C、D 四种植物的种子串成的序列。
仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串)。 ABA ABBA A由于年代久远,其中许多种子脱落了,因而可能会失去镜像的特征。你的任务是:
给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子。
输入一行,表示现在看到的密码串(长度不大于1000)
要求输出一个正整数,表示至少脱落了多少个种子。
例如,输入:
ABCBA
则程序应该输出:
0
再例如,输入:
ABDCDCBABC
则程序应该输出:
3
#include<bits/stdc++.h> using namespace std; int dp[1010][1010]; string a1; string a2; int LCS(string s1,string s2) { for(int i=1;i<=s1.size();i++) for(int j=1;j<=s2.size();j++) { if(s1[i]==s2[j]) dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=max(dp[i][j-1],dp[i-1][j]); } return dp[s1.size()][s2.size()]; } int main() { cin>>a1; a2=a1; reverse(a2.begin(),a2.end()); printf("%d",a1.size()-LCS(a1,a2)); return 0; }
string 的stl还是得再看一眼。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY