算法
文章平均质量分 54
ywjun的学习笔记
这个作者很懒,什么都没留下…
展开
-
广度优先搜索算法
广度优先搜索算法(Breadth-First-Search),又译作宽度优先搜索,或横向优先搜索,简称BFS,是一种图形搜索算法。简单的说,BFS是从根节点开始,沿着树的宽度遍历树的节点。如果所有节点均被访问,则算法中止。广度优先搜索的实现一般采用open-closed表。目录 [隐藏] 1 作法2 实作方法2.1 C 的实作2.2 C++ 的实作转载 2013-04-23 10:30:05 · 17071 阅读 · 1 评论 -
在O(1)时间删除指定链表结点
#region 在O(1)时间删除指定链表结点 /// /// 给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。 /// /// class MyList where T:IComparable { private T _data; private MyList _next;原创 2013-08-28 23:39:16 · 995 阅读 · 0 评论 -
边看边写(二)
#region 用两个栈实现队列的功能 class CQueue where T : IComparable { private Stack enterQ = new Stack(); private Stack outQ = new Stack(); public void AppendTail(T data)原创 2013-08-28 20:17:19 · 1093 阅读 · 0 评论 -
边看边写(调整数组顺序使奇数位于偶数前面)
#region 调整数组顺序使奇数位于偶数前面 /// /// 输入一个 整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分 /// Reorder中array为待排序的数组,使用组合的方式调用使用何种方法进行排序(如奇数在前,偶数在后,或能被3整除的数在前,不能被3整除的数在后) /// clas原创 2013-08-29 09:37:16 · 1834 阅读 · 0 评论 -
海量数据处理系列----C++中Bitmap算法的实现
bitmap是一个十分有用的结构。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。 适用范围:可进行数据的快速查找,判重,删除,一般来说数据范围是int的10倍以下基本原理及要点:使用bit数组来表示某些元素是否存在,比如8位电话号码扩展:bloom fi转载 2013-09-05 20:50:05 · 1029 阅读 · 0 评论 -
边看边写(打印1到最大的n位数)
注:之前写了使用大数打印的方法 #region 打印1到最大的n位数 /// /// 输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。 /// 使用递归算法实现,以及使用字符排列的方式,如对000~999进行全排列。 /// class MaxOfDigital {原创 2013-08-28 22:43:30 · 1576 阅读 · 3 评论 -
边复习边写(树的操作)
树的创建,插入节点,前(中,后)遍历,求树的深度,判断一棵树是否为平衡二叉树,二叉树中和为某一值的路径,打印二叉树的结构原创 2013-08-28 00:15:09 · 1262 阅读 · 0 评论 -
巧排数字,将1,2,...,19,20这20个数字排成一排,使得相邻的两个数字之和为一个素数
巧排数字,将1,2,...,19,20这20个数字排成一排,使得相邻的两个数字之和为一个素数,且首尾两数字之和也为一个素数。编程打印出所有的排法。排序方法:以贪心算法进行搜索,由于两个数字之和是一个素数,且首尾两数字之和也为一个素数,因此只需要找出以1开头的排列就可以了。使用贪心算法的同时使用回溯法,当遇到相邻两个数的时候就回溯到上一步从新搜索。ofstream fout("D://P原创 2013-09-15 23:10:38 · 5986 阅读 · 0 评论 -
wiki-贝塞尔曲线
随笔- 31 文章- 314 评论- 72 [转]wiki-贝塞尔曲线贝塞尔曲线维基百科,自由的百科全书 三次方贝塞尔曲线在数学的数值分析领域中,贝塞尔曲线, 又称贝赛尔曲线(Bézier曲线)是电脑图形学中相当重要的参数曲线。更高维度的广泛化贝塞尔曲线就称作贝塞尔曲面,其中贝塞转载 2014-11-25 13:53:53 · 1649 阅读 · 0 评论 -
已知数0到n-1,给定数m,每隔m取出一个数,问,全部取出时的序列
#include#includeusing namespace std;#define IntType vector#define Len 6void show(int );void select(IntType v, int m){ if (m==0) return; int choose=0; int size = v.size(); while(!v.empty())原创 2013-05-27 22:14:00 · 1135 阅读 · 0 评论 -
排序算法(堆排序,归并排序,快速排序、选择排序、直接插入排序)
写了一下午,加一晚上,还没有写希尔排序、基数排序、冒泡排序,由于,这些排序算法在面试中,可能经常会问道,因此,觉得自己动手写写,虽然算法思想清楚,但是仍然会碰到很多处理问题,对堆排序研究了几小时终于写好了,自己写程序粗心了...#include#include#includeusing namespace std;typedef vector HeapType;typedef ve原创 2013-05-06 22:24:18 · 1568 阅读 · 0 评论 -
输入一个数n,输出1,2,3,...,9999(n个9)(利用大数求解)
#include#include#include#includeusing namespace std;class bigInt{ public: bigInt(){} bigInt(const bigInt &data):v(data.v) {} bigInt(string s) { int len =s.size(); while(len) {原创 2013-05-05 18:55:43 · 2366 阅读 · 0 评论 -
编程之美-程序理解和时间分析
题目如下:阅读以下C#代码,回答问题:[cpp] view plaincopyusing System; using System.Collections.Generic; using System.Text; namespace FindTheNumber { class Program转载 2013-04-23 16:31:18 · 994 阅读 · 0 评论 -
输入一个字符串,打印出该字符串中字符的所有排列
题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。分析:这是一道很好的考查对递归理解的编程题,因此在过去一年中频繁出现在各大公司的面试、笔试题中。我们以三个字符abc为例来分析一下求字符串排列的过程。首先我们固定第一个字符a,求后面两个字符bc的排列。当两个字符bc的排列原创 2013-04-24 10:51:09 · 13634 阅读 · 2 评论 -
最大公约数问题
解法一思想:辗转相除法,假设f(x,y)表示x,y的最大公约数,去k=x/y,b=x%y,则有x=ky+b,若一个数能够同时整除x和y,则,必能同时整除y和b;同时整除y和b的数,也能同时整除x和y,则x和y的公约数与y和b的公约数相同,其最大公约数也相同,则,f(x,y)=f(y,x%y)(x>=y>0),知道其中一个为数0,剩下的另一个数就是两者最大的公约数,如f(42,30)=f(30,原创 2013-04-16 09:12:09 · 723 阅读 · 0 评论 -
2012年10月9号阿里巴巴笔试(c++)(修改)
1.BMP格式图像,图像深度为24位,一个512*1024的点阵图像所占空间是多少?[html] view plaincopy答:(24/8)B*512*1024=1.5M 2.十进制数字-3转换为3进制的补码结果是多少?[cpp] view plaincopy答:-3可以表示为:符号转载 2013-04-26 16:38:53 · 880 阅读 · 0 评论 -
简单并带有错误的环形单链表检测代码
LinkedList* IsCyclicLinkedList (LinkedList* pHead) { LinkedList* pCur; LinkedList* pStart; while (pCur != NULL) { for ( ; ; ) { if (pSta原创 2013-04-23 21:44:02 · 1645 阅读 · 6 评论 -
n个无序整数,已知第i个数在排好序的序列中的位置为j,满足|i-j|<=K,请设计一种排序算法,对该序列进行排序。注:算法时间复杂度为O(nlgn)的得0分,复杂度为O(nk) 的得两分,总分是20分
题目:n个无序整数,已知第i个数在排好序的序列中的位置为j,满足|i-j|的得两分,总分是20分。别人的解析:由以上条件判断最小的数字一定在前k个中,于是可以讲前k个数建立一个最小堆,然后把根元素取出,该根元素就是最小数,然后将第k+1个数放入堆中,因为第二小的数字肯定在下标为1到k+1的位置范围内,所以调整最小堆之后,根元素就是第二小元素,取出该元素,将第k+2个元素放入堆中,。原创 2013-04-28 13:36:59 · 2072 阅读 · 0 评论 -
输入一个正数n,输出所有和为n连续正数序列。
思想:因为是n个连续的序列,因此,设整数n为y,y由i个数组成,初始值为x,则有x+x+1+...+x+(i-1)=y,因此有 x=(2* y - i*(i-1))/(2*i),若x是整数,则可以由以x开始的i个数组成。由于,没有仔细算过n的取值范围,所以暂时去[2,y/2],希望各位给出范围建议。#includeusing namespace std;void continusSeque原创 2013-04-28 21:25:59 · 1416 阅读 · 0 评论 -
树的遍历、深度、平衡树
#include#include#include#includeusing namespace std;#define Len 10templatestruct Tree{ T data; Tree *Left; Tree *Right; public: Tree():Left(0),Right(0){};};void show(const Tree &t);boo原创 2013-05-03 09:49:15 · 1126 阅读 · 0 评论 -
贝塞尔曲线初探
以下转的贝塞尔曲线,可以通过三个点,来确定一条平滑的曲线。在计算机图形学应该有讲。是图形开发中的重要工具。实现的是一个图形做圆周运动。不过不是简单的关键帧动画那样,是计算出了很多点,当然还是用的关键帧动画,即使用CAKeyframeAnimation。有了贝塞尔曲线的支持,可以赋值给CAKeyframeAnimation 贝塞尔曲线的Path引用。用贝塞尔曲线画圆,转载 2016-12-14 16:45:47 · 806 阅读 · 0 评论