POJ 1159 Palindrome
来源:互联网 发布:修正主义 知乎 编辑:程序博客网 时间:2024/05/23 00:07
题目大意:
只有一个测例,给定一个字符串并告诉其长度N(3 ≤ N ≤ 5,000),让你求最少插入多少个字符能使其成为回文字符串。
题目链接
注释代码:
/* * Problem ID : POJ 1159 Palindrome * Author : Lirx.t.Una * Language : GCC * Run Time : 1094 ms * Run Memory : 564 KB */ #pragmaGCC optimize("O2")#include <string.h>#include <stdio.h>//字符串的最大长度#defineMAXSTRLEN5001#defineMAX(x,y)( (x) > (y) ? (x) : (y) )chars[MAXSTRLEN];//stringcharr[MAXSTRLEN];//reverse string,反转字符串//公共长度范围为[0, 5000]处于short范围内//dp[i + 1][j + 1]只和dp[i][j + 1]、dp[i + 1][j]、dp[i][j]有关//设a = i,b = i + 1,则//dp[b][j + 1]只和dp[a][j + 1]、dp[b][j]、dp[a][j]有关//由于dp[a][j + 1]和dp[a][j]来自a数组而dp[b][j]来自于b数组,且位于dp[b][j]之前//因此就用a、b两个数组就可以搞定了shortdp[2][MAXSTRLEN];intmain() {intn;//字符串长度inti, j;//技术变量scanf("%d%s", &n, s);strcpy(r, s);strrev(r);//反转,只在GCC中有效,否则就只能用C++对string重载的strrev了for ( i = 0; i < n; i++ )for ( j = 0; j < n; j++ )if ( s[i] == r[j] )dp[( i + 1 ) % 2][j + 1] = dp[i % 2][j] + 1;elsedp[( i + 1 ) % 2][j + 1] = MAX( dp[i % 2][j + 1], dp[( i + 1 ) % 2][j] );//回文需要补全的字符个数即为原长减去原串和反串的最长公共子序列的长度printf("%d\n", n - dp[n % 2][n]);return 0;}
无注释代码:
#pragmaGCC optimize("O2")#include <string.h>#include <stdio.h>#defineMAXSTRLEN5001#defineMAX(x,y)( (x) > (y) ? (x) : (y) )chars[MAXSTRLEN];charr[MAXSTRLEN];shortdp[2][MAXSTRLEN];intmain() {intn;inti, j;scanf("%d%s", &n, s);strcpy(r, s);strrev(r);for ( i = 0; i < n; i++ )for ( j = 0; j < n; j++ )if ( s[i] == r[j] )dp[( i + 1 ) % 2][j + 1] = dp[i % 2][j] + 1;elsedp[( i + 1 ) % 2][j + 1] = MAX( dp[i % 2][j + 1], dp[( i + 1 ) % 2][j] );printf("%d\n", n - dp[n % 2][n]);return 0;}
单词解释:
palindrome:n, 回文
symmetrical:n, 对称的
identically:adv, 相同地
0 0
- poj 1159 Palindrome LCS
- poj 1159 Palindrome LCS
- poj 1159 Palindrome
- poj 1159 Palindrome
- dp poj 1159 Palindrome
- poj 1159 Palindrome
- poj 1159 Palindrome
- POJ 1159 Palindrome DP
- Palindrome poj 1159
- Poj 1159 Palindrome
- poj 1159 Palindrome
- poj 1159 Palindrome 【DP】
- poj 1159Palindrome
- poj 1159 Palindrome
- POJ 1159 Palindrome
- POJ 1159 Palindrome
- Poj 1159 Palindrome
- POJ 1159 Palindrome
- oracle中CLOB对象操作
- Table表格内容超长时:自动截取、自动换行
- js的全局变量和局部变量
- unity3d KeyCode各键值说明
- 中水回用技术细节处理标准
- POJ 1159 Palindrome
- cocos2d-x 从环境搭建到win32项目移植android平台
- MFC中Doc,View,MainFrmae,App各指针的互相获取
- QT信号(signal)和槽(slot)应注意的问题
- 参加iOS开发之——Xcode5之打包静态库
- linux下boost库安装
- iOS设计模式之一(MVC模式,单例模式)
- 心情不好
- Android Calendar的运用