数据结构算法
不知取什么昵称
这个作者很懒,什么都没留下…
展开
-
Poj 2431
用了优先级队列(即最大堆)proirity_queue 2431 Accepted 296K 47MS C++ #include //Poj_2431 Expedition #include #include #include #include #include #include using namespace std; const int原创 2015-08-26 22:51:35 · 478 阅读 · 0 评论 -
swap 三种求法
原文地址 http://blog.chinaunix.net/uid-26642637-id-3290611.html 问题描述: 假设有两个整数A=8,B=9 ,现在要交换A和B的值,使得A=9,B=8. 原理分析: 方法一:利用一个辅助空间C,然后先将A中的数据放在C中,然后再将B中的数据放到A中,最后再将C中的数据放到A中,这样就可以实现数据的交换了。 C语言代转载 2015-09-01 09:54:29 · 448 阅读 · 0 评论 -
manacher算法
一、问题描述 现给定一个已知的字符串str[],现在想要在O(n)的时间复杂度之内求出一个最长的回文子字符串(正着和倒着顺序读一致)。 Manacher最早发现了可以用O(n)的时间复杂度来解决该问题,所以这种方法称之为Manacher算法。 二、符号说明 回文串包括奇数长的和偶数长的,一般求的时候都要分情况讨论,Manacher的这个算法做了个简单的处理,把奇偶情况统一了转载 2015-08-20 11:34:17 · 301 阅读 · 0 评论 -
Poj3126
3126 Accepted 200K 0MS C++ 1902B bfs #include #include #include #include #include #include //#pragma warning(disable:4996) using namespace std; const int MAX_N=10005; const int I原创 2015-09-02 21:05:47 · 394 阅读 · 0 评论 -
Poj2488 A Knight's Journey
英文是硬伤 字典序输出 14653114 493238731 2488 Accepted 164K 32MS C++ 1364B #include //Poj2488 #include #include #include #include #include #include using namespace std;原创 2015-08-23 19:23:09 · 315 阅读 · 0 评论 -
编程之美 3.2 TelPhone
#include #include #include using namespace std; const int TelLength=20; char c[10][5]={ "","","ABC","DEF","GHI","JKL","MNO","PQRS","TUV","WXYZ" }; int total[10]={0,0,3,3,3,3,3,4,3,4}; int num转载 2015-09-01 11:42:22 · 323 阅读 · 0 评论 -
Poj2429 inverse of LCM&GCD
有一个比较简单的思路 定义N=l/g,所求x,y ; 将N素数分解得到N=p1^q1 * p2^q2 * ..... * pk^qk; 再定义数组a[k],其中a[i]=pi^qi; 定义x1=x/g y1=y/g 由数论知识知道 x1 和 y1 互素 而且 lcd(x,y)=l 所以 a[i] 只能属于x1 和 y1 中一个 再用 dfs() 找出和最小就ok了 代码很短哦 #原创 2015-08-31 12:34:04 · 425 阅读 · 0 评论 -
数组循环位移 三种
#include using namespace std; /* void RightShift1(char *arr, int N, int k){ while(k--){ char t = arr[N-1]; for(int i = N-1; i > 0; i--) arr[i] = arr[i-1]; ar转载 2015-09-01 10:02:23 · 709 阅读 · 0 评论 -
Fibonacci 数求法
没有完全实现 其中代码 来源 《编程之美》、《数据结构(c++语言版)》第三版 #include #include using namespace std; int main() { cout << "Hello world!" << endl; return 0; } int Fib1(int n){ if(n<=1) return n;原创 2015-08-31 16:54:32 · 353 阅读 · 0 评论 -
串匹配
本文为原书数据结构(c++语言版)第11章的代码 第一节 问题分类 模式检测 ,模式定位,模式计数,模式枚举 第二节 暴力算法 int match(char *P,char *T){//Brute-force-1 size_t n=strlen(T),i=0; size_t m=strlen(P),j=0; while(i<n&&j<m)转载 2015-08-29 17:36:35 · 363 阅读 · 1 评论 -
MIT HAKMEM算法分析
原文 http://blog.csdn.net/msquare/article/details/4536388 简化版 复习用 问题需求:计算32位整型数中的'1'的个数 思路分析: 1.整型数 i 的数值,实际上就是各位乘以权重——也就是一个以2为底的多项式: i = A0*2^0+A1*2^1+A2*2^2+... 因此,要求1的位数,实际上只要将各位消权:转载 2015-08-30 15:03:50 · 417 阅读 · 0 评论