腾讯2017暑期实习生编程题-A-构造回文
来源:互联网 发布:java calendar c# Date 编辑:程序博客网 时间:2024/05/13 06:19
ACM模版
描述
题解
很久很久以前,大概是去年这个时候,在51上做过一道求原串如何删除才能使得回文串最长,输出最长长度。相比这个问题,不过是少了一步,只需再多一步总数-最长回文串长度即可,至于最长回文串长度只需要将原串逆序排列,然后求原串与逆序串的最长公共子序列即可,即 LCS 问题。
代码
#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int MAXN = 1010;int a[MAXN][MAXN];int LCS(const char *s1, const char *s2){ // s1:0...m, s2:0...n int m = (int)strlen(s1), n = (int)strlen(s2); int i, j; a[0][0] = 0; for (i = 1; i <= m; ++i) { a[i][0] = 0; } for (i = 1; i <= n; ++i) { a[0][i] = 0; } for (i = 1; i <= m; ++i) { for (j = 1; j <= n; ++j) { if (s1[i - 1] == s2[j - 1]) { a[i][j] = a[i - 1][j - 1] + 1; } else if (a[i - 1][j] > a[i][j - 1]) { a[i][j]= a[i - 1][j]; } else { a[i][j] = a[i][j - 1]; } } } return a[m][n];}int main(){ char s[MAXN], s_[MAXN]; while (~scanf("%s", s)) { int len = (int)strlen(s); for (int i = 0; i < len; i++) { s_[len - i - 1] = s[i]; } cout << len - LCS(s, s_) << '\n'; } return 0;}
参考
《最长公共子序列》
0 0
- 腾讯2017暑期实习生编程题-A-构造回文
- 腾讯2017暑期实习生编程题-构造回文
- 构造回文--腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题之构造回文
- 腾讯2017暑期实习生编程题--构造回文
- 腾讯2017暑期实习生编程题:构造回文 [python]
- 构造回文字符串(最长公共子序列)----腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题——构造回文串
- 算法与数据结构——算法题 79:构造回文(腾讯2017暑期实习生编程题) ? 待解决
- 腾讯17年暑期实习生笔试题 - 构造回文
- 构造回文_腾讯实习生编程题
- 腾讯2017实习生编程题之构造回文
- 腾讯2017暑假实习生编程题构造回文
- 腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题
- 微信小程序入门三request请求
- Codeforces 366C Dima and Salad (背包变形,DP好题)
- Hadoop-2.7.3集群卡在INFO mapreduce.Job: Running job: job_1457182697428_0001
- CentOS7关于ifconfig eth0 up的问题
- python爬虫get和post方法的使用以及cookie
- 腾讯2017暑期实习生编程题-A-构造回文
- 第7章 复用类(组合与继承的选择?是否需要上转型!!!)
- Android中Handler使用浅析
- 用户模式下的线程同步
- CSS3 Border-color
- NSIS自定义页面的跳转
- Lucene笔记
- tomcat类加载器找不到jar包中的类问题分析与解决思路
- Android获取验证码倒计时封装工具