算法
文章平均质量分 73
cr2066
与其在叹气中度过一生,不如在阳光中奔跑一生。
展开
-
Morris Traversal方法遍历二叉树(非递归,不用栈,O(1)空间)
本文主要解决一个问题,如何实现二叉树的前中后序遍历,有两个要求: 1. O(1)空间复杂度,即只能使用常数空间; 2. 二叉树的形状不能被破坏(中间过程允许改变其形状)。 通常,实现二叉树的前序(preorder)、中序(inorder)、后序(postorder)遍历有两个常用的方法:一是递归(recursive),二是使用栈实现的迭代版本(stack+iterative)。这两种转载 2016-07-03 20:38:34 · 295 阅读 · 0 评论 -
C语言实现星号点号的交错打印
题目:实现如下图所示的星号点号的交错打印 * *.*. *..*..*.. *...*...*...*... *....*....*....*....*.... *.....*.....*.....*.....*.....*..... 规律:每行星号之间点号的个数为该行星号总数的个数减1 代码如下:双层递归实现 void dot(int N)//实现点的打印 { if (N =原创 2016-06-11 16:50:43 · 1241 阅读 · 0 评论 -
八皇后问题的全排列解法
本文转自微软何海涛的微博。微博网址:http://zhedahht.blog.163.com/ 直接上代码: #include #include #include #include using namespace std; int g_number = 0;//全局变量,记录解法的总数 void Permutation(int ColumnIndex[], int length, i转载 2016-08-22 10:06:05 · 412 阅读 · 0 评论 -
给定一整数在有序的整数数组中找出与给定值最接近的k个整数
思路:首先找出给定值在给定数组中的插入位置(不是真的将给定值插入给定数组),然后以此位置为基准,向左或向右依次找出最接近的k个整数。 难点:个人在处理过程中的难点在于向左或向右移动过程中的确切位置的确定。 代码: //找出value在数组中的应该插入位置 int kPosition(int A[], int nLength,int value) { int pos = 0;原创 2016-08-13 12:41:31 · 4181 阅读 · 0 评论 -
递归判断一维数组是否为升序数组
这么容易的题,考场竟然没写出来,惭愧啊!书还得多看啊! bool UpSort(int a[], int start, int end)//start为数组的第一个下标,end为数组的第二个下标 { if (start == end) return true; else if (a[start] <= a[start + 1]) return UpSort(a, start + 1,原创 2016-08-26 13:01:13 · 1760 阅读 · 1 评论