腾讯2017暑期实习生招聘笔试题……做了一个世纪才做出来

 //腾讯2017暑期实习生招聘第一道题。做了一个世纪才做出来………………太菜了

 /**
题目:
给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?
输出需要删除的字符个数。 输入描述: 输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000. 输出描述: 对于每组数据,输出一个整数,代表最少需要删除的字符个数。 输入例子:
abcda
google 输出例子:
2
2
*/ /*
看牛客网上的一个解题思路是:
比较简单的想法就是求原字符串和其反串的最大公共子串的长度,然后用原字符串的长度减去这个最大公共子串的长度就得到了最小编辑长度。(注:最大公共子串并不一定要连续的,只要保证出现次序一致即可看作公共子串)
可以使用 Needleman/Wunsch算法 牺牲内存换取简单的代码和CPU时间。
算法解释可以参考博主“万仓一黍”总结的博文
http://www.cnblogs.com/grenet/archive/2010/06/03/1750454.html 于是去学习动态规划,和文本比较算法。然后回来做这个题。也是出了各种问题。
慢慢学习提高吧
*/ #include<stdio.h>
#include<string.h> //这里如果不是string.h而是string的话在VC6.0是可以编译通过的,但是在牛客网的oj平台不能通过。加上.h就好了
#include<iostream>
#define N 1000 //这个函数本来是为了获得字符串的倒序,但是因为空间不够了,所以没有使用
void reverse(char s1[], char s2[]){
s2[strlen(s1)] = '\0';
for(int i=;i<strlen(s1);i++){
s2[i] = s1[strlen(s1)--i];
}
} int max(int a, int b, int c){
return (a>b?a:b)>c?(a>b?a:b):c;
} int find(char s[]){
int count[][N];
//int count[N][N]; //原来是定义了一个N*N维的数组来存储动态规划的计算数组,但是使用空间太大,于是只使用了2*N维的数据。即只存储上一次的结果
int len = strlen(s);
int i,j;
for(i=;i<len+;i++){
//count[i][0] = count[0][i] =0;
count[][i] = ;
} count[][] = ;
//char s0[N];
//reverse(s,s0);
for(i=;i<len+;i++){
for(j=;j<len+;j++){
if(s[i-] == s[len-j]){ //这里原来写的是s[i]==s[len-j-1],然后出现各种问题。有许多用例通不过
count[][j] = count[][j-]+;
} else {
count[][j] = max(count[][j-],count[][j-],count[][j]);
}
}
for(j=;j<len+;j++){
count[][j] = count[][j];
}
} return (len-count[][len]);
} int main(){
char s[N];
while(scanf("%s",s)!=EOF){
int result = find(s);
printf("%d\n",result);
}
return ;
}

构造回文-C++实现的更多相关文章

  1. USACO Prime Palindromes 构造回文数

    这道题目一点也不卡素数的判断 就是朴素的sqrt(n) 也不卡 所以~放心的用吧. 构造回文的时候看了HINT 其中是这么写的: Generate palindromes by combining d ...

  2. 腾讯笔试题 构造回文(LCS问题)

    给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串.如何删除才能使得回文串最长呢? 输出需要删除的字符个数. 输入描述: 输入数据有多组,每组包含一个字符串s,且保证:1<=s. ...

  3. codeforces 486C Palindrome Transformation 贪心求构造回文

    点击打开链接 C. Palindrome Transformation time limit per test 1 second memory limit per test 256 megabytes ...

  4. 算法编程题积累(3)——腾讯笔试"构造回文“问题

    首先理解题意,回文串的特点:倒序后跟原串相同.故而可以将原串看成向一个回文串在任意位置添加任意字符后形成的字符串,也就是说原串中存在一段未必连续的回文序列. 通过分析可以知道AC本题的核心思路:求出回 ...

  5. POJ2402 Palindrome Numbers 回文数

    题目链接: http://poj.org/problem?id=2402 题目大意就是让你找到第n个回文数是什么. 第一个思路当然是一个一个地构造回文数直到找到第n个回文数为止(也许大部分人一开始都是 ...

  6. [swustoj 371] 回文数

    回文数(0371) 问题描述 一个自然数如果把所有数字倒过来以后和原来的一样,那么我们称它为回文数.例如151和753357.我们可以把所有回文数从小到大排成一排:1, 2, 3, 4, 5, 6, ...

  7. 2014-2015 ACM-ICPC, Asia Xian Regional Contest G The Problem to Slow Down You 回文树

    The Problem to Slow Down You Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjud ...

  8. LeetCode5. Longest Palindromic Substring 最长回文子串 4种方法

    题目链接:https://leetcode.com/problems/longest-palindromic-substring/ 题意很简单,就是求一个字符串得最长子串,这里的子串指连续的. 本文给 ...

  9. bzoj千题计划305:bzoj2565: 最长双回文串(回文自动机)

    https://www.lydsy.com/JudgeOnline/problem.php?id=2565 正着构造回文自动机 倒过来再构造一个回文自动机 分别求出以位置i开始的和结尾的最长回文串 # ...

随机推荐

  1. 数据流滑动窗口平均值 · sliding window average from data stream

    [抄题]: 给出一串整数流和窗口大小,计算滑动窗口中所有整数的平均值. MovingAverage m = new MovingAverage(3); m.next(1) = 1 // 返回 1.00 ...

  2. [leetcode]299. Bulls and Cows公牛和母牛

    You are playing the following Bulls and Cows game with your friend: You write down a number and ask ...

  3. IaaS、PaaS、SaaS、CaaS、MaaS五者的区别

    云计算构架图          很明显,这五者之间主要的区别在于第一个单词,而aaS都是as-a-service(即服务)的意思,这五个模式都是近年来兴起的,且这五者都是云计算的落地产品,所以我们先来 ...

  4. centos7下mysql5.6的主从复制

    一.mysql主从复制介绍 mysql的主从复制并不是数据库磁盘上的文件直接拷贝,而是通过逻辑的binlog日志复制到要同步的服务器本地,然后由本地的线程读取日志里面的sql语句,重新应用到mysql ...

  5. hreeJS加载Obj资源后如何实现内存释放?

    问题: 我利用ThreeJS做了一个在同一个场景下动态加载Obj的页面,具体功能是:点击按钮A:加载A模型,点击按钮B:加载B模型...现在的问题是,前面已经加载过的模型,无法实现释放,内存一直在累加 ...

  6. mvc 封装控件使用mvcpager

    具体使用如下: 前台部分: @RenderPage("~/Views/Controls/_Pagebar.cshtml", new PageBar { pageIndex = Mo ...

  7. HTML5 APP应用实现图片上传及拍照上传功能

    https://blog.csdn.net/zmzwll1314/article/details/46965663 http://www.cnblogs.com/leo0705/ https://zh ...

  8. springmvc cfx 整合

    1.先看一下目录列表,本人用的是eclipse 2.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xm ...

  9. 导出jar文件

    当我们编好一段代码时,就需要将其导出成应用程序,即jar文件(jar文件就是在Java运行环境下运行的应用程序).今天,巩固就教大家用eclipse导出jar文件. 第一步:找到eclipse,双击打 ...

  10. 为了记忆和方便翻阅 vue构建后的结构目录说明

    一. ├── build              // 项目构建(webpack)相关代码             记忆:(够贱)    9个 │ ├── build.js       // 生产环 ...