随笔分类 -  Algorithms

Pow 算法
摘要:#include using namespace std;templateT Pow(T x, Int n){ T r(1); // 应是含幺半群的幺元 while (n != 0) { if (n & 0x1 == 1) { r *= x; } n >>= 1; x *= x; } return r;}template T PowBoost(T x, Int n){ T r(n & 0x1 ? x : 1); while ((n >>= 1) != 0)... 阅读全文

posted @ 2014-03-17 19:19 jjtx 阅读(682) 评论(0) 推荐(0)

gcd 最小公约数
摘要:1 int gcd(int a, int b) {2 return b == 0 ? a : gcd(b, a % b);3 } 阅读全文

posted @ 2014-03-15 16:52 jjtx 阅读(178) 评论(0) 推荐(0)

求两个等长的有序序列的中位数(2011计算机统考试题)
摘要:1 /******************************************************************** 2 created: 2014/01/05 3 created: 22:01 4 file base: main 5 file ext: cpp 6 author: Justme0 (http://blog.csdn.net/Justme0) 7 8 purpose: 求两个等长的有序序列的中位数,时间复杂度O(log(n)) 9 ... 阅读全文

posted @ 2014-01-05 22:07 jjtx 阅读(1317) 评论(0) 推荐(0)

埃拉托色尼筛子筛选素数
摘要:1 /******************************************************************** 2 created: 2013/10/22 3 created: 22:10:2013 12:51 4 file base: 埃拉托色尼筛子 5 file ext: cpp 6 author: Justme0 (http://blog.csdn.net/Justme0) 7 8 purpose: 高效筛选素数 9 *******... 阅读全文

posted @ 2013-10-22 12:53 jjtx 阅读(228) 评论(0) 推荐(0)

Chomsky文法类型判断(Recognizing the type of the Chomsky grammar)
摘要:1.试验目的输入:一组任意的规则。输出:相应的Chomsky 文法的类型。2.实验原理1).0型文法(短语文法)如果对于某文法G,P中的每个规则具有下列形式: u:: = v其中u∈V+,v∈V*,则称该文法G为0型文法或短语文法,简写为PSG。0型文法或短语结构文法的相应语言称为0型语言或短语结构语言L0。这种文法由于没有其他任何限制,因此0型文法也称为无限制文法,其相应的语言称为无限制性语言。任何0型语言都是递归可枚举的,故0型语言又称递归可枚举集。这种语言可由图灵机(Turning)来识别。2).1型文法(上下文有关文法)如果对于某文法G,P中的每个规则具有下列形式: xUy:: = x 阅读全文

posted @ 2013-05-31 13:31 jjtx 阅读(4015) 评论(0) 推荐(0)

交换排序之快速排序
摘要:快速排序(递归):#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;#define LEN 8 // 有LEN个元素要排#define TESTstruct Record { // 为了考察排序的稳定性,定义元素是结构体类型 int key; int otherinfo;};int Partition(Record *arr, int low, int high){ // 交换顺序表L中子序列arr[low..high]的记录,使枢轴记录到位, // 并返回... 阅读全文

posted @ 2012-06-12 01:07 jjtx 阅读(334) 评论(0) 推荐(0)

插入排序之表插入
摘要:表插入时间复杂度O(n^2)附加空间O(1)稳定排序#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; #define LEN 8 // 有LEN个元素要排 struct Record { // 为了考察排序的稳定性,定义元素是结构体类型 int key; int otherinfo; int next; }; void LinkListInsertSort(Record *arr, int length) // length是要排序的元素的个数,0号单元除外 { for (int i . 阅读全文

posted @ 2012-05-20 00:09 jjtx 阅读(209) 评论(0) 推荐(0)

插入排序之折半插入排序
摘要:折半插入排序时间复杂度O(n^2)附加空间O(1)稳定排序#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; #define LEN 8 // 有LEN个元素要排 struct Record { // 为了考察排序的稳定性,定义元素是结构体类型 int key; int otherinfo; }; void BInsertSort(Record *arr, int length) // length是要排序的元素的个数,0号单元除外 { for (int i = 2; i <= le 阅读全文

posted @ 2012-05-19 21:09 jjtx 阅读(222) 评论(0) 推荐(0)

qsort函数的cmp
摘要:在常用算法总排序是最常用的算法之一!而快排在c 的 stdlib库中是有现成的封装对于我们写算法是提供了方便之处的!一 、对int类型数组排序int cmp ( const void *a , const void *b ) { return *(int *)a - *(int *)b; }qsort(arry, N, sizeof(arry[0]), cmp);qsort(指向一个要排序数组的首地址, 指要排序数组的元素个数, 指每个元素的大小, cmp); 这个是一个从大到小的排序如果要从小到大排序可以讲cmp函数改为如下: int cmp(constvoid *a,constvoid.. 阅读全文

posted @ 2012-05-19 19:31 jjtx 阅读(415) 评论(0) 推荐(0)

插入排序之直接插入排序
摘要:直接插入排序时间复杂度O(n^2)附加空间O(1)稳定排序#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; #define LEN 8 // 有LEN个元素要排 struct Record { // 为了考察排序的稳定性,定义元素是结构体类型 int key; int otherinfo; }; void InsertSort(Record *arr, int length) // length是要排序的元素的个数,0号单元除外 { for (int i = 2; i <= len 阅读全文

posted @ 2012-05-19 16:47 jjtx 阅读(185) 评论(0) 推荐(0)

久仰的八皇后问题
摘要:1、介绍先上张图来说明用回溯法解八皇后问题的每一步: 2、程序对着严蔚敏的书写的,写好后运行竟然一次性成功了,没有任何bug,我鸡冻了。上代码:// N皇后问题 #include <iostream> using namespace std; #define N 8 bool matrix[N + 1][N + 1] = {0}; bool IsLegal(bool matrix[N + 1][N + 1], const int &i, const int &j) { // 判断前面的i-1个棋子与matrix[i][j]是否冲突,i为1时合法 for (int m 阅读全文

posted @ 2012-05-06 22:03 jjtx 阅读(255) 评论(0) 推荐(0)

汉诺塔问题(竟然还与Sierpiński三角形分形有关)
摘要:Tower of Hanoi// 把n个盘子从1(a)号柱子借助2(b)号柱子移到3(c)号柱子 // 总共要移 2^n-1 次 #include <iostream> using namespace std; void Move(int &x, int &y) // 没有真正移动盘子,只是输出方案 { cout << x << " --> " << y << endl; } void Hanoi(int n, int a, int b, int c) { if(n > 0) { Han 阅读全文

posted @ 2012-04-21 22:49 jjtx 阅读(313) 评论(0) 推荐(0)

滑雪(二维平面上 动态规划)
摘要:http://acm.pku.edu.cn/JudgeOnline/problem?id=1088先MARK,待自己慢慢研究出来再A!http://www.cppblog.com/AClayton/archive/2007/09/17/32336.aspx#include <iostream> #include <cstdio> #include <cstdlib> using namespace std; #define MAXNUM 10 int dlen[MAXNUM][MAXNUM]; unsigned int a[MAXNUM][MAXNUM]; 阅读全文

posted @ 2012-04-10 19:23 jjtx 阅读(274) 评论(0) 推荐(0)

最长递增子序列(LIS) 学习中ing
摘要:单调递增最长子序列描述求一个字符串的最长递增子序列的长度如:dabdbf最长递增子序列就是abdf,长度为4输入第一行一个整数0<n<20,表示有n个字符串要处理随后的n行,每行有一个字符串,该字符串的长度不会超过10000输出输出字符串的最长递增子序列的长度样例输入3 aaa ababc abklmncdefg样例输出1 3 7Accepted #include<stdio.h> int length(char * s) { int len[128] = {0}, i, t; for(; *s != '\0' && (t = len[* 阅读全文

posted @ 2012-04-08 16:39 jjtx 阅读(249) 评论(0) 推荐(0)

POJ 1163题 数字三角形问题(动态规划)
摘要:http://poj.org/problem?id=11631、普通递归#include <iostream> #include <cstring> #include <cstdio> using namespace std; #define __max(a,b) (((a) > (b)) ? (a) : (b)) #define MAXNUM 101 int N; int aMax[MAXNUM][MAXNUM]; // aMax is memorandum int matrix[MAXNUM][MAXNUM]; int Max(int i, int 阅读全文

posted @ 2012-04-07 19:11 jjtx 阅读(560) 评论(0) 推荐(0)

我的第一个动态规划程序(试图用递归求斐波拉契数)
摘要:1、这是一般的递归(指数爆炸型,时间复杂度O(1.618^n)):#include <iostream> #include <cstdio> using namespace std; __int64 Fib(int n) { if(n == 1 || n == 2) return 1; return Fib(n - 1) + Fib(n - 2); } int main(void) { int n; while(cin >> n) printf("%I64d\n", Fib(n)); return 0; }2、今天看了动态规划的入门,觉得 阅读全文

posted @ 2012-04-07 14:31 jjtx 阅读(464) 评论(0) 推荐(0)

矩阵的特征值 => 矩阵的幂 => 广义斐波拉契数列的通项公式
摘要:众所周知,计算机里动辄涉及到斐波拉契数列,本文主要是运用线性代数的方法求出广义斐波拉契数列的通项公式。广义斐波拉契数列的定义(自定义,可能还不够严谨,欢迎指教)如下:且a,b满足a^2 + 4b > 0(原因后面有,即保证分母Δ>0)观察递推公式可知: (1)OK!写这篇博客有两点启示:1.亦可用差分方程的方法求通项公式,不过我还没学,我发现把递推关系用矩阵的形式写成再求通项也是可以的,不过要构造出这个关系比较困难,比如(1)式。2.在一般的算法中求矩阵的幂几乎都是用二分法求,殊不知若λi下有ki个线性无关的特征向量(ki是λi的重根数),即可用相似对角形的方法求,这在高等数学里可 阅读全文

posted @ 2012-03-29 09:58 jjtx 阅读(514) 评论(0) 推荐(0)

导航