杭电-1513Palindrome(LCS+滚动数组) 拼搏现实的明天。 2022-08-10 05:46 139阅读 0赞 # Palindrome # **Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)** Total Submission(s): 4344 Accepted Submission(s): 1482 Problem Description A palindrome is a symmetrical string, that is, a string read identically from left to right as well as from right to left. You are to write a program which, given a string, determines the minimal number of characters to be inserted into the string in order to obtain a palindrome. As an example, by inserting 2 characters, the string "Ab3bd" can be transformed into a palindrome ("dAb3bAd" or "Adb3bdA"). However, inserting fewer than 2 characters does not produce a palindrome. Input Your program is to read from standard input. The first line contains one integer: the length of the input string N, 3 <= N <= 5000. The second line contains one string with length N. The string is formed from uppercase letters from 'A' to 'Z', lowercase letters from 'a' to 'z' and digits from '0' to '9'. Uppercase and lowercase letters are to be considered distinct. Output Your program is to write to standard output. The first line contains one integer, which is the desired minimal number. Sample Input 5 Ab3bd Sample Output 2 明显的LCS,但是要用到二位数组dp\[5000\]\[5000\]会超内存,联系到每次的计算只与上次有关,所以可以用到滚动数组! #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int dp[2][5500]; char s1[5500],s2[5500]; int main() { int m,n,i,j; while(scanf("%d",&n)!=EOF) { scanf("%s",s1); int t=0; for(i=n-1;i>=0;i--) s2[t++]=s1[i]; s2[n]='\0'; memset(dp,0,sizeof(dp)); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { int x=i%2; int y=1-x; if(s1[i-1]==s2[j-1]) dp[x][j]=dp[y][j-1]+1; else dp[x][j]=max(dp[y][j],dp[x][j-1]); } } printf("%d\n",n-(dp[n%2][n])); } return 0; }
相关 【杭电oj1513】Palindrome Palindrome Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O 爱被打了一巴掌/ 2022年09月25日 04:27/ 0 赞/ 174 阅读
相关 杭电1061 Rightmost Digit Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J 布满荆棘的人生/ 2022年09月17日 05:27/ 0 赞/ 262 阅读
相关 杭电-1513Palindrome(LCS+滚动数组) Palindrome Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O 拼搏现实的明天。/ 2022年08月10日 05:46/ 0 赞/ 140 阅读
相关 杭电1039 Easier Done Than Said? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 6553 一时失言乱红尘/ 2022年06月05日 12:48/ 0 赞/ 269 阅读
相关 杭电1026 Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 6553 快来打我*/ 2022年06月04日 05:53/ 0 赞/ 289 阅读
相关 杭电oj Problem Title 1 Pro. ID 1000 A+B Problem include<stdio.h> int main() { £神魔★判官ぃ/ 2022年05月15日 16:14/ 0 赞/ 319 阅读
相关 杭电1060 此题是一道数学题,也是一道技巧题,也是不能直接算的,否则会超时的!!! 此题思路: 设n^n=d.xxxx\10^(k-1),其中k表示n^n的位数; d.xxxx 痛定思痛。/ 2021年12月01日 22:40/ 0 赞/ 307 阅读
相关 杭电2075 此题真的是简单的再不能简单了!呵呵!我一直纠结,出这样的题是什么意思呢?不懂!哎,不说那些废话了,直接 ac吧!呵呵! \include<iostream> using 今天药忘吃喽~/ 2021年12月01日 22:38/ 0 赞/ 288 阅读
相关 杭电2078 说实话,此题是一道有严重bug的问题,对于xhd没晚能复习的科目数m根本就没用上!!!哎不管那么些了,反正ac了!呵呵!此题这样想xhd得复习效率是前一课程和后一课程复习效率差 ╰+攻爆jí腚メ/ 2021年12月01日 22:38/ 0 赞/ 339 阅读
相关 杭电2090 此题就是一道令人无法琢磨的题!哎!!我简直就无语了!!呵呵!竟然能出这题。。。。 废话少说,直接ac!!! \\\ 此题要想输出结果,还需要注意一下! 在linux 约定不等于承诺〃/ 2021年12月01日 21:12/ 0 赞/ 349 阅读
还没有评论,来说两句吧...