腾讯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. 关于swift语言中导入OC三方类找不到头文件的解决方法

    首先我遇到的问题是这样的: 我之前封装的OC类,我导入现在的swift工程中,然后建立桥接文件,在Swift的控制器中可以找到这个OC写的东西. 但是问题来了,当你使用cocoapods导入的OC三方 ...

  2. php session阻塞页面分析及优化 (session_write_close session_commit使用)

    转: http://www.tuicool.com/articles/bqeeey 首先看下下面代码, session1.php 文件 <?php ini_set('session.save_p ...

  3. 一句话引发的思考 - synchronized/super

    https://blog.csdn.net/cool__wang/article/details/52459380#commentBox

  4. 【转】MEF程序设计指南二:Silverlight中使用CompositionInitializer宿主MEF

    MEF可以在传统应用程序中使用(包括桌面的Winform.控制台程序和Web的ASP.NET),也可以在RIA的Silverlight中使用.在Silverlight中只是宿主的方式有所不同,实际上在 ...

  5. tomcat用虚拟目录方式发布项目与manager页面配置

    conf/Catalina/localhost:指定项目的配置信息 1.添加:ROOT.xml 听见Context节点: <Context docBase="/usr/local/to ...

  6. linux下给php安装memcached及memcache扩展(转)

    http://kimi.it/257.html (另外的方法)linux安装memcached及memcache扩展一.安装libevent函数库下载地址:http://libevent.org默认被 ...

  7. 工作五年以上的 UI 设计师都在干什么?

    30 岁,现在坐标北京,从毕业至今都一直在做设计.目前从业超过了五年,也没打算离开设计这个行业.即便有一天不再从事设计专职的岗位,也仍然会在生活中,或者一些份外的工作中做「设计师」的角色,因为设计已成 ...

  8. FSCapture截图软件注册码

    企业版序列号: name:bluman serial/序列号/注册码:VPISCJULXUFGDDXYAUYF

  9. Zookeeper 系列(二)安装配制

    Zookeeper 系列(二)安装配制 一.Zookeeper 的搭建方式 Zookeeper 安装方式有三种,单机模式和集群模式以及伪集群模式. 单机模式 :Zookeeper 只运行在一台服务器上 ...

  10. 彻底关闭win10的自动更新,一定要坚持看到最后一页

    https://jingyan.baidu.com/article/9faa7231e7b78b473c28cbb6.html 是否好使我还在测试,不好使的话,再跟新 2018-05-20 今天电脑又 ...