随笔分类 -  算法

csdn在线编程里面的一个排列组合题
摘要:是csdn在线编程里面的一个问题回文字符串是指从左到右和从右到左相同的字符串,现给定一个仅由小写字母组成的字符串,你可以把它的字母重新排列,以形成不同的回文字符串。 输入:非空仅由小写字母组成的字符串,长度不超过100; 输出:能组成的所有回文串的个数(因为结果可能非常大,输出对1000000007取余数的结果)。 例如:输入"aabb" 输出为2(因为“aabb”对应的所有回文字符串有2个:abba和baab) 函数头部 c: int palindrome(const char *s); c++ int palindrome(const string &s); j 阅读全文

posted @ 2013-12-07 19:44 Jingle Guo 阅读(1138) 评论(0) 推荐(0)

从关于素数的算法题来学习如何提高代码效率
摘要:今天在博文C语言初学者代码中的常见错误与瑕疵(5)看了一个关于素数的算法题,如下:素数在世博园某信息通信馆中,游客可利用手机等终端参与互动小游戏,与虚拟人物Kr. Kong 进行猜数比赛。当屏幕出现一个整数X时,若你能比Kr. Kong更快的发出最接近它的素数答案,你将会获得一个意想不到的礼物。例如:当屏幕出现22时,你的回答应是23;当屏幕出现8时,你的回答应是7;若X本身是素数,则回答X;若最接近X的素数有两个时,则回答大于它的素数。输入:第一行:N 要竞猜的整数个数接下来有N行,每行有一个正整数X输出:输出有N行,每行是对应X的最接近它的素数样例:输入4225188输出235197看到这 阅读全文

posted @ 2013-12-05 16:51 Jingle Guo 阅读(1596) 评论(2) 推荐(3)

找出N个数中最小的k个数问题(复杂度O(N*logk))
摘要:这是一个经典的算法题,下面给出的算法都在给定的数组基础上进行,好处时不用分配新的空间,坏处是会破坏原有的数组,可以自己分配新的空间以避免对原有数组的破坏。 思路一 先直接排序,再取排序后数据的前k个数。 排序算法用最快的堆排序,复杂度也会达到O(N*logN). void filterDown(in 阅读全文

posted @ 2013-11-03 14:49 Jingle Guo 阅读(6746) 评论(15) 推荐(0)

字符串匹配之KMP算法
摘要:一.简单的字符串匹配 我们经常需要在某一串字符中查找是否存在给定的子串,我们将给定的子串叫做模式,查找子串的问题叫做模式匹配。 进行字符串的模式匹配,最简单的方法就是依次将子串与给定的字符串依次进行比较。算法如下: int patFind(const char* str, const char* p 阅读全文

posted @ 2013-10-23 16:31 Jingle Guo 阅读(1387) 评论(0) 推荐(0)

各种排序算法的实现
摘要:一.基本概念 1.稳定排序与不稳定排序: 对于A,B两个键值相等的对象,且在排序前,A在B之前,如果排序后A肯定还在B之前,则为稳定排序,如果B可能在A之前,为不稳定排序。 2.内排序和外排序: 内排序是指在排序期间数据对象全部存放在内存的排序 外排序是指在排序期间数据对象太多,不能同时存放在内存, 阅读全文

posted @ 2013-10-22 19:17 Jingle Guo 阅读(2309) 评论(3) 推荐(2)

生成小于N的随机数
该文被密码保护。

posted @ 2013-10-21 13:23 Jingle Guo 阅读(31) 评论(0) 推荐(0)