2012年7月27日

最短路径---正向表形式

摘要: 单源最短路径,用于路权相等的情况,dijkstra优化为bfs,正向表形式,复杂度O(m),求出源s到所有点的最短路经,传入图的大小n和正向表list,buf,边权值len,返回到各点最短距离min[]和路径pre[],pre[i]记录s到i路径上i的父结点,pre[s]=-1 1 #define MAXN 200 2 #define inf 1000000000 3 typedef int elem_t; 4 5 void dijkstra(int n,int* list,int* buf,elem_t len,int s,elem_t* min,int* pre){ 6 int ... 阅读全文

posted @ 2012-07-27 22:42 dinghing 阅读(503) 评论(0) 推荐(0) 编辑

2012年7月26日

最短路径---连接表形式

摘要: 对连接矩阵求解最短路径有多种方法,用于路权相等的情况,dijkstra优化为bfs,邻接表形式,复杂度O(m),求出源s到所有点的最短路经,传入图的大小n和邻接表list,边权值len,返回到各点最短距离min[]和路径pre[],pre[i]记录s到i路径上i的父结点,pre[s]=-1。 1 #define MAXN 200 2 #define inf 1000000000 3 typedef int elem_t; 4 struct edge_t{ 5 int from,to; 6 edge_t* next; 7 }; 8 void dijkstra(int n,edge... 阅读全文

posted @ 2012-07-26 23:24 dinghing 阅读(220) 评论(0) 推荐(0) 编辑

2012年7月25日

素数表

摘要: 在编程中我们常常要使用素数来解决很多的问题,当然求解素数的方法也是有很多,在这里我们先研究一个比较好的求解素数的方法,并将其制作成一个比较容易管理的素数表,方便以后的使用和处理。int plist[10000],pcount=0;int prime(int n){ int i; if ((n!=2&&!(n%2))||(n!=3&&!(n%3))||(n!=5&&!(n%5))||(n!=7&&!(n%7))) return 0; for (i=0;plist[i]*plist[i]<=n;i++) if (!(n%plis 阅读全文

posted @ 2012-07-25 18:25 dinghing 阅读(107) 评论(0) 推荐(0) 编辑

2012年7月8日

阶乘最后非零位

摘要: 1 #include<string.h> 2 #define MAXN 10000 3 int lastdigit(char*buf) 4 { 5 const int mod[20] = {1,1,2,6,4,2,2,4,2,8,4,4,8,4,6,8,8,6,8,2}; 6 int len = strlen(buf),a[MAXN],i,c,ret = 1; 7 if(len == 1) 8 return mod[buf[0]-'0']; 9 for(i = 0;i<len;i++)10 a[i] = buf[len-1-i]-'0';11 阅读全文

posted @ 2012-07-08 10:53 dinghing 阅读(326) 评论(0) 推荐(0) 编辑

2012年6月30日

c++之const解惑

摘要: const类型限定符可以把一个变量定义为常量从而避免了人为的不必要的对指定数据的修改。但同时const对变量限定后的一系列情况也常常是我们感到迷惑,为此我们来一点一点解析const的情况(高手可以直接跳过) const int bufSize = 512 ,定义bufSize 是一个常量并将其初始化为512, 在程序中任何改变这个值的企图都将导致编译错误因此它被称为是只读的read- only 例如 // 错误企图写入const 对象 if ( bufsize = 0 ) ...因为常量在定义后就不能被修改,所以它必须被初始化。未初始化的常量定义将导致编译错误: ... 阅读全文

posted @ 2012-06-30 15:16 dinghing 阅读(253) 评论(0) 推荐(1) 编辑

2012年6月28日

深入理解c++之动态内存和指针

摘要: 在C++中,对象可以静态分配——即编译器在处理程序源代码时分配,也可以动态分配——即程序执行时调用运行时刻库函数来分配。这两种内存分配方法的主要区别是效率与灵活性之间的平衡准则不同。由于静态内存分配是在程序执行之前进行的因而效率比较高,但是它缺少灵活性,它要求在程序执行之前就知道所需内存的类型和数量。例如利用静态分配的字符串数组,我们无法很容易地处理和存储任意的文本文件。一般来说存储未知数目的元素需要动态内存分配的灵活性。 关于c++中的动态分配我们必须了解c++中的指针,在C++中指针的主要用处是管理和操纵动态分配的内存,在具体讨论起用法之前我们先要注意静态和动态内存分配的区别: ... 阅读全文

posted @ 2012-06-28 08:46 dinghing 阅读(726) 评论(0) 推荐(0) 编辑

导航