还是回文时间限制:2000 ms | 内存限制:65535 KB 难度:3描述判断回文串很简单,把字符串变成回文串也不难。现在我们增加点难度,给出一串字符(全部是小写字母),添加或删除一个字符,都会产生一定的花费。那么,将字符串变成回文串的最小花费是多少呢?输入多组数据第一个有两个数n,m,分别表示...
分类:
其他好文 时间:
2015-11-16 17:38:46
阅读次数:
149
#includeint main(){ int a, m, sum; scanf("%d", &a); m=a; sum=0; while(m!=0) { sum=sum*10+m%10; ...
分类:
其他好文 时间:
2015-11-11 21:57:48
阅读次数:
163
题意分析:求给定区间内的质数回文数题目分析:1.多组测试数据,所以先打表。2.先求质数再判断回文,效率低下;所以先构造回文数,再判断质数。3.偶数位的回文数都能被11整除,自己证明去。所以,偶数位的回文数除了11都是合数。4.一个k位数,可以构造出一个奇数位的回文数。比如13,可以构造131;189可以构造18981.所以100000000内的只要从1构造到9999即可。5.若范围为1000000...
分类:
其他好文 时间:
2015-08-30 23:16:15
阅读次数:
218
题意:给定一棵树,n个节点,每个节点处有一个字母,结点的深度定义为节点到根结点1的距离,
有m个询问(u,v),每次回答以结点u为根的子树的深度为v的那些节点处的字母能否组成一个回文串,特别的,空串也是回文串。
思路:首先说明判断回文串的方法,只要出现次数为奇数个字母个数不超过2,那么这些字母一定可以组成回文串。
接下来考虑将树转成线性结构。
利用dfs+时间戳将结点按照深度存入一个线性结...
分类:
其他好文 时间:
2015-08-14 17:12:31
阅读次数:
102
int num[5]={1,9,3,2,1};
int *p=num;
int *q=&num[4];
int flag=1; for (; p<q; p++,q--) {
if (*p!=*q) {
flag=0;
break;
}
} if (flag) {...
分类:
编程语言 时间:
2015-07-25 10:44:28
阅读次数:
136
本来判断回文串是一件很容易的事情,只需要反转字符串后在与原字符串相比较即可。这道题目明确说明不能使用额外的空间,那么使用将其分解连接成字符串的方法便不是可行的。只好采用数学的方式: 每次取最高位和最低位相比较,总的位数可以用一个while先处理出来,循环直至取余和除数相等。
具体见代码:
class Solution {
public:
bool isPalindrome(int x)...
分类:
其他好文 时间:
2015-07-20 23:42:24
阅读次数:
258
解法一:
一次遍历,装入vector,然后再一次遍历判断回文。
时间复杂度O(n),空间复杂度O(n)
解法二:
找到链表中点,拆分后,逆转后半个链表,然后两个链表同时顺序遍历一次。
若链表长度为奇数,最末尾的元素可以忽略。
时间复杂度O(n),空间复杂度O(1)
/**
* Definition for singly-linked list.
*...
分类:
其他好文 时间:
2015-07-20 19:46:34
阅读次数:
117
题目要求判断最长的回文,有两种思路可供选择。
思路一,从两头进行判断,定义两个指针start_index和end_index分别指向头部和尾部,首先固定start_index,让end_index从最后一个元素向前遍历,直到碰到start_index,其间对start_index到end_index的范围进行回文判断,回文判断的规则很简单,如果start和end指向的元素一样,回文长度length=2,然后start+1,end-1,继续比较,如果符合则继续+2,直到start<end不再满足,注意在这之中...
分类:
其他好文 时间:
2015-07-09 14:34:42
阅读次数:
89
http://www.wzoi.org/usaco/11%5C302.asppat没太水了没什么好说的。然而感觉如果不计代价的话,先把string reverse再比较是否相同来判断回文,好方便pat#include using namespace std;bool gao(int base, in...
分类:
其他好文 时间:
2015-07-09 06:13:46
阅读次数:
102
//判断字符串是否是回文?
int fun(char *sre)
{
char *s1,*s2;
s1 = str;
s2=str+strlen(str)-1;
if(strlen(str)%2 != 0)
{
return 0;
}
while(s1
{
if(*s1==*s2)
{
s1++;
s2--;...
分类:
其他好文 时间:
2015-06-22 15:01:57
阅读次数:
225