上一页 1 2 3 4 5 6 7 8 ··· 15 下一页
  2013年7月19日
摘要: 题目: 输入n个整数,输出其中最小的k个,例如输入1,2,3,4,5,6,7,8这8个数,则最小的4个是1,2,3,4(输出不要求有序)解: 利用快速排序的partition,算导上求第k大数的思想,求出第k大的数,然后遍历数组,如果a[i]#include#includeusing namespace std;// a[begin]->a[end]int partition(int *a,int begin,int end){ srand((int)time(NULL)); int pivot=rand()%(end-begin+1)+begin; int temp; ... 阅读全文
posted @ 2013-07-19 21:00 紫金树下 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 题目: 输入一个二叉树,从根结点开始往下访问一直到叶子节点所经过的所有节点组成一条路径,打印出和与输入整数相等的所有路径解: 参考打印二叉树中某节点的祖先节点http://www.cnblogs.com/buxianghe/p/3198662.html这里还是采用后续非递归遍历的方法,记录在栈中的节点元素的和,当1个节点2次进栈2次出栈时,并且满足从根结点到它的和等于输入的和,并且它是叶子节点时,那么此时栈中元素就是这条路径,打印它代码:/* 参考后续遍历 */#includeusing namespace std;typedef struct node{ int data; ... 阅读全文
posted @ 2013-07-19 15:18 紫金树下 阅读(328) 评论(0) 推荐(0) 编辑
  2013年7月18日
摘要: 问题:给出一个数组,元素有正有负,数组中连续的1个或者多个数组成1个子数组,每个子数组有1个和,求所有子数组和值的最大值,时间复杂度为O(n)解: 一:可以用穷举的方法求出这个最大值,只是时间复杂度是O(n^3),这中方法的代码如下int dphe(int a[],int len){ int i,j; int **he=new int*[len]; for(i=0;i=max) max=he[i][j]; for(i=0;iA[p,q]就不满足A[p,q]是子数组最大的了。所以,我们可以对A进行遍历,当遇到子数组的和是负值时,就可以抛弃整... 阅读全文
posted @ 2013-07-18 22:33 紫金树下 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 题目:在1棵二叉树中,假设所有节点的值都不同,给定值x,打印值为x的节点的所有祖先节点解: 利用后续非递归遍历打印。后续非递归遍历中,当节点2次进栈2次出栈后要访问它,此时根据后续遍历性质,它的左右孩子都被访问过了,访问过这个节点后再下一个要访问的节点就是当前节点的父节点。代码如下/* *后序遍历 */#include#includeusing namespace std;typedef char Elemtype;typedef struct node{ Elemtype data; struct node* left; struct node* right;}Tree;typedef s. 阅读全文
posted @ 2013-07-18 17:36 紫金树下 阅读(2850) 评论(1) 推荐(1) 编辑
  2013年7月16日
摘要: 参考线索二叉树的建立方法,对二叉查找树进行中序遍历,遍历中保存1个pre指针,指向刚刚访问过的节点,即当前节点的中序前驱。代码如下:#include#includeusing namespace std;typedef struct node{ int data; struct node* left; struct node* right;}Tree;//输入二叉查找树的先序顺序,NULL指针用0代替Tree* create(void){ int d; Tree *root=NULL; //按先序输入,NULL指针是0 cin>>d; if(d==0) return NULL; e 阅读全文
posted @ 2013-07-16 22:17 紫金树下 阅读(202) 评论(0) 推荐(0) 编辑
  2013年7月11日
摘要: http://blog.csdn.net/silvervi/article/details/6325698今天尝试编译内核,下载到了一份tar.xz结尾的压缩文件,网上解决方法比较少,不过还是找到了,如下:$xz -d ***.tar.xz$tar -xvf ***.tar 可以看到这个压缩包也是两层压缩,外面是xz压缩方式,里层是tar压缩方式。 阅读全文
posted @ 2013-07-11 17:41 紫金树下 阅读(149) 评论(0) 推荐(0) 编辑
  2013年7月10日
摘要: Floyd算法是一种动态规划算法,用于求解有向图中每对顶点间的最短路径。它要求有向图中可以有负权值,但是不能有负的回路,和Dijkstra,Bellman-Ford算法一样,都是不能有负回路的。设有向图G=(V,E),采用邻接矩阵来表示每对顶点之间的距离d[i][j]。初始时,若i=j,则d[i][j]=0;若i和j之间直接相连,则d[i][j]=Weight(i,j);若i和j之间不直接相连,则d[i][j]=正无穷 OR INT_MAX。假设节点编号是1,2,3,,,,,,,n现在要计算顶点之间的最短路径,设之间最短路径的中间节点的最大节点是k,即中间节点在(1,2,3,,,,k)的范围内 阅读全文
posted @ 2013-07-10 21:42 紫金树下 阅读(505) 评论(0) 推荐(0) 编辑
  2013年7月9日
摘要: 1。移位运算符 如果被移位的对象长度是n位,那么移位计数必须>=0,并且<n,例如对于1个32位的数,移位运算n<<31和n<<0是OK的,n<<32和n<<-1就不行 阅读全文
posted @ 2013-07-09 15:35 紫金树下 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 1。这一章貌似有个小错误,开始时定义 #define f (x) ((x)-1),然后f(x)代表什么,书上说是(x) ((x)-1),应该是 (x) ((x)-1)(x)2。关于宏定义中参数的2次使用问题3。宏不是语句,举例assert宏的定义 #define assert(e) ((void)((e) || (__assert_error(__FILE,__LINE)))) 阅读全文
posted @ 2013-07-09 15:09 紫金树下 阅读(152) 评论(0) 推荐(0) 编辑
  2013年7月8日
摘要: 1。变量的声明。 在不同的源文件中,应该是1个定义+多个声明的形式存在的,并且声明的类型和定义的类型要一样,否则可能会报错。 声明 : extern 类型 变量名 声明并定义: extern 类型 变量名=值 定义: 类型 变量明=值 static用来修饰变量和函数是属于某个源文件的,不能被其他的源文件引用。2。 函数返回类型 如果函数在被调用前没有声明,那么函数的返回类型默认是整形int的,如果将函数和调用函数的分别写在2个不同的源文件,那么在函数被调用的地方要进行函数的声明。3。头文件 对1个要被广泛声明的变量,可以把它写在头文件中,例如 file.h extern ... 阅读全文
posted @ 2013-07-08 22:10 紫金树下 阅读(133) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 15 下一页