题目地址:HDU 4628
这题没想到怎么快速枚举子状态。。。看了题解才知道的。
用for(state=i;state>0;state=(state-1)&i)就可以了。
这题的具体做法是先预处理出所有的状态是不是回文串,然后就是普通的DP了。
代码如下:#include
#include
#include
#include <q...
分类:
其他好文 时间:
2015-07-25 16:58:25
阅读次数:
136
最长回文
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 10596 Accepted Submission(s): 3759
Problem Description
给出一个只由小写英文字符a,b,c...y,z组...
分类:
编程语言 时间:
2015-07-22 20:57:57
阅读次数:
168
/*Palindromes _easy versionProblem Description“回文串”它是一个正读和反读同一字符串。例“level”要么“noon”等是回文序列。请编写一个程序,读取推断字符串是否“回文”。Input输入包括多个測试实例,输入数据的第一行是一个正整数n,表示測试实例的...
分类:
其他好文 时间:
2015-07-22 12:24:18
阅读次数:
94
本来判断回文串是一件很容易的事情,只需要反转字符串后在与原字符串相比较即可。这道题目明确说明不能使用额外的空间,那么使用将其分解连接成字符串的方法便不是可行的。只好采用数学的方式: 每次取最高位和最低位相比较,总的位数可以用一个while先处理出来,循环直至取余和除数相等。
具体见代码:
class Solution {
public:
bool isPalindrome(int x)...
分类:
其他好文 时间:
2015-07-20 23:42:24
阅读次数:
258
题意:给你m个字符,其中有n种字符,每种字符都有两个值,分别是增加一个这样的字符的代价,删除一个这样的字符的代价,让你求将原先给出的那串字符变成回文串的最小代价。
思路:区间dp 设dp[i][j]表示从i到j区间满足条件的最优解
状态方程:
if(str[i]==str[j])dp[i][j]=dp[i+1][j-1];
else
dp[i][j]=min(dp[i+1][j]+val...
分类:
其他好文 时间:
2015-07-20 16:25:30
阅读次数:
74
还是第一次发博文呢.嗯,最近在尝试每天做一道编程题,当然,我要求自己只能用C语言实现.一方面可增加自己对C函数库的熟悉程度,另一方面也想增加自身的编码经验.毕竟,感觉平时Code的时间严重不够.对于一个职业Coder来说这样肯定不太好嘛! 好吧,回到正题吧.今天的题目内容很常规.就是判断用户输...
分类:
其他好文 时间:
2015-07-19 21:32:46
阅读次数:
118
796次 55.1% 2000ms 65536K
有一个新的研究显示,人在看见一系列的图片时,如果它们的排列有一定的轴对称性,则会更为觉得赏心悦目。根据这个特性,作为阿里巴巴旗下重要的电子商务交易平台的淘宝,希望了解商品推荐的图片走马灯现在的赏心悦目情况,以便判断是否之后需要做出调整。例如,当价值分别为 1,2,1 的商品图片排列在一起的时候,人们可以看到它的所有非空区间 [1]、[2]...
分类:
其他好文 时间:
2015-07-19 18:11:31
阅读次数:
238
题意是要求出一个串的第k大的半回文子串
半回文串的定义是:若一个串其实位置为1,那么当所有奇数位i,且i
那么这个串就是半回文串。
作法就是,把这个串的所有半回文子串建成一个字典树,然后查第k大就好了
#include
#include
#include
#include
#include
#include
#include
#include
#include
#i...
分类:
其他好文 时间:
2015-07-19 10:09:46
阅读次数:
125
题目链接
题意:
若一个字符串是半回文串,则满足第一位和最后一位相等, 第三位和倒数第三位相等,如此类推。
给定一个字符串s,输出s的所有子串中的半回文串字典序第k大的 字符串。
good[i][j] 表示 s(i,j) 是半回文串。
把这些回文串插到字典树里 在字典树上找第k个叶子节点。
插入时:插入以i点开头的所有半回文串。
#include
#include ...
分类:
其他好文 时间:
2015-07-17 00:34:29
阅读次数:
169
很经典的题目,求字符串中的最长回文子串。
(1)最朴素的解法 ---暴力 复杂度O(N³)
这也是最容易想到的方法,最外层循环枚举起点i,第二层循环从i+1开始向后枚举,第三层判断是不是回文串。最后取最长子串的返回。
代码比较简单,这里没有列出。
(2)中心扩展法。复杂度O(N²)
枚举每一个字符作为中心点向左右扩展。但是这里要注意,对于每一次扩展要分奇偶两种情况。否则可能会漏掉情况。
...
分类:
其他好文 时间:
2015-07-16 09:52:23
阅读次数:
141