题目是这样的:求通过添加字将一个字符串变为回文字符串所需最少的添加次数。

解法:求出该字符串与反串的最大公共子序列的长度k,那么字符串的长度n减去k就是所求值。

为了不超出内存限制,使用了类似滚动数组的方法。

问题在这里,C程序和改写后的C++程序(只改写了头文件,添加了一句using namespace std;),而被判运行时差足有3s,有图为证:

可能与测试数据和OJ的评判系统有关,但我想肯定也和这两种语言某种方面的差异有关,在此请教路过的同学,谢谢!

附:

原题链接:1097 Palindrome

C代码

 1 # include <stdio.h> 2 # include <string.h> 3  4 int N; 5 int c1[5006]; 6 int c2[5006]; 7  8 int main() 9 {10     char s1[5005], s2[5005];11     int i, j;12     13     while (~scanf("%d%s", &N, s1))14     {15         for (i = 0; i < N; ++i) 16             s2[i] = s1[N-1-i];17 18         for (j = 0; j < N; ++j)19         {20             for (i = 0; i < N; ++i)21                 if (s1[i] == s2[j]) c2[i+1] = c1[i] + 1;22                 else c2[i+1] = c1[i+1]>c2[i] ? c1[i+1]:c2[i];23             memcpy(c1, c2, (N+1)*sizeof(int));24         }25         printf("%d\n", N-c1[N]);26         memset(c1, 0, sizeof(c1));27     }28     29     return 0;30 }

C++代码

 1 # include <cstdio> 2 # include <cstring> 3  4 using namespace std; 5  6 int N; 7 int c1[5006]; 8 int c2[5006]; 9 10 int main()11 {12     char s1[5005], s2[5005];13     int i, j;14     15     while (~scanf("%d%s", &N, s1))16     {17         for (i = 0; i < N; ++i) 18             s2[i] = s1[N-1-i];19 20         for (j = 0; j < N; ++j)21         {22             for (i = 0; i < N; ++i)23                 if (s1[i] == s2[j]) c2[i+1] = c1[i] + 1;24                 else c2[i+1] = c1[i+1]>c2[i] ? c1[i+1]:c2[i];25             memcpy(c1, c2, (N+1)*sizeof(int));26         }27         printf("%d\n", N-c1[N]);28         memset(c1, 0, sizeof(c1));29     }30     31     return 0;32 }

转载于:https://www.cnblogs.com/JMDWQ/archive/2012/04/02/2430536.html

c++比c快?一道字符串题目相关推荐

  1. 三只青蛙的故事:一道脑筋急转弯题目引发的思考

    一道脑筋急转弯题目是这样的:有三只青蛙在河中的一片叶子上顺水漂流.其中一只想跳到河里.在叶子上还剩几只青蛙? 大多数人会回答还有两只.(我刚看到此题时认为一只也没有,因为一只青蛙跳了之后剩下的两只也会 ...

  2. 关于js字符串替换的一道笔试题目

    题目描述 请写出一个字符串转换函数,接受两个参数: 1.字符串 形如{a}ab-{b}cde{c}fff{d}{}: 2.对象,形如{'a':'1','b':'2','d':'4'} 根据,对象的属性 ...

  3. leetcode 1859 又是一道字符串分隔的题目

    1859. 将句子排序 难度简单14收藏分享切换为英文接收动态反馈 一个 句子 指的是一个序列的单词用单个空格连接起来,且开头和结尾没有任何空格.每个单词都只包含小写或大写英文字母. 我们可以给一个句 ...

  4. ctf xor题_从一道CTF题目谈PHP中的命令执行

    原创 Xenny 合天智汇 快睡的时候,打开B站发现有位用户留言,大意就是让我帮忙看一道题,正好当时有空,于是就打开了他发的链接,代码如下 很明显是一道PHP代码审计的题目,而且只需要绕过第三行的if ...

  5. Google测试工师的一道面试题目

    最近重读<Google软件测试之道>,其中有一道面向软件测试工程师的面试题非常考验测试人员的思维.拿来与你们分享,看看这样一道题,你能想到多少个测试点. 题目: 在一个Web测试页面上,有 ...

  6. 安卓逆向从入门到嗝屁之另一道CTF题目

    小伙伴发了一道安卓的CTF题目,有空就看了下: 首先,这次就先不装了,开个模拟器卡的一P,androidkiller.gda等无法打开,jeb正常打开(当然dex2jar打开dex文件,再用jd-gu ...

  7. 比KMP算法更简单更快的字符串匹配算法

    我想说一句"我日,我讨厌KMP!". KMP虽然经典,但是理解起来极其复杂,好不容易理解好了,便起码来巨麻烦! 老子就是今天图书馆在写了几个小时才勉强写了一个有bug的.效率不高的 ...

  8. mysql查询数字比字符串快,与字符串相比,MySQL在where子句中使用数字更快吗?

    假设您有4种评估类型:测试,测验,MiniQuiz和FinalExam 我们像这样将记录存储在数据库中 studentid ----- assesType 1 test 2 quiz 3 quiz 4 ...

  9. sunday java_Sunday算法:最快的字符串匹配算法

    之前被KMP的next数组搞的头昏脑胀说不上也是比较烦人的,今天看到还有这么有趣而且高效的算法(比KMP还快),看来有必要做一点笔记了 Sunday算法是Daniel M.Sunday于1990年提出 ...

  10. 字符串题目---2判断两个字符串是否为变形词

    题目描述 给定两个字符串str1和str2,如果str1和str2中出现的字符种类出现的一样且每种字符出现的次数也一样,那么str1和str2互为变形词.请判断str1和str2是否为变形词 输入描述 ...

最新文章

  1. 5 个被忽视的习惯,决定了你很难成为高级开发工程师!
  2. Web压力测试系统 nGrinder
  3. Swift数组扩容原理
  4. 前目的地罗伯森是谁_前目的地谁演的,前目的地的扮演者罗伯森先生资料介绍-易看TV...
  5. 两款PHP开发的开源的在线办公软件简介
  6. 上网课的心得体会1000字_【家庭教育】家庭教育心得体会 ——济南市罗而小学家庭教育“好家风好家教”专栏(十一)...
  7. matlab有限差分一维导热,一维导热方程 有限差分法 matlab实现
  8. C/C++ debug(二)
  9. springboot的restful接口成功失败返回值设计
  10. OpenFOAM 张量运算
  11. 面相,暴露你的生活质量
  12. cmd批量文件重命名
  13. 遇到maven私服下载过慢或者卡死的情况
  14. 双11销额超二三四五名总和,喜临门为床垫行业树立“高度和广度”
  15. 《计算机世界》抛出了‘板砖’;引出了业界的‘美玉’
  16. 三分钟学会使用HTML制作三角形
  17. OKR:从0到100
  18. 湖南省第十一届程序设计大赛 (水题)聊天止于呵呵
  19. 支付宝RSA密钥生成器1024位
  20. 笔记本电池是开机充电还是关机充电

热门文章

  1. 2016年零售业CIO的七大革命性挑战
  2. ipsec在企业网中的应用(IKE野蛮模式)(转)
  3. php curl使用
  4. 更好的使用Java集合(三)
  5. 关于PPP认证中的PAP和CHAP原理取证与相关疑问
  6. Android 应用程序之间数据共享—ContentProvider
  7. 【相机标定系列】相机成像的理想模型原理,相机矩阵分解
  8. 1.2 矩阵与线性方程组-向量空间、内积空间与线性映射
  9. 凸优化第六章逼近与拟合 6.1 范数逼近
  10. LiveData源码解析