随笔分类 -  数据结构与算法

摘要:N皇后问题是一个经典的问题,在一个N*N的棋盘上放置N个皇后,每行一个并使其不能互相攻击(同一行、同一列、同一斜线上的皇后都会自动攻击)。 一、 求解N皇后问题是算法中回溯法应用的一个经典案例 回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。 在现实中,有... 阅读全文
posted @ 2016-07-07 17:09 Areas 阅读(1155) 评论(0) 推荐(0) 编辑
摘要:/* ** 目前最快的N皇后递归解决方法 ** N Queens Problem ** 试探-回溯算法,递归实现 */ #include "stdafx.h" #include "iostream" #include using namespace std; #include "time.h" // sum用来记录皇后放置成功的不同布局数;upperlim用来标记所有列都已经放置好了皇后。 ... 阅读全文
posted @ 2016-07-07 16:39 Areas 阅读(349) 评论(0) 推荐(0) 编辑
摘要:SQL Server发送邮件的存储过程对于DB中的资料变更,有时会有寄Mail通知相关人员的需求。下面是实现这一功能的一种方法1.建立发Mail的存储过程CREATE PROCEDURE [dbo].[sp_send_mail] @From varchar(100) , @To varchar(2000) , @Subject varchar(2000)=" ", @Body varchar(4000) =" ", @BCC varchar(4000) =" "/************************************ 阅读全文
posted @ 2012-10-22 09:58 Areas 阅读(839) 评论(0) 推荐(0) 编辑
摘要:Sorting Algorithm AnimationsProblem Size:20·30·40·50 Magnification:1x·2x·3xAlgorithm:Insertion·Selection·Bubble·Shell·Merge·Heap·Quick·Quick3Initial Condition:Random·Nearly Sorted·Reversed·Few UniqueInsertionSelectionBubbleSh 阅读全文
posted @ 2012-02-29 12:48 Areas 阅读(358) 评论(0) 推荐(0) 编辑
摘要:思想还是先来看看选择排序的思想。选择排序的思想非常直接,不是要排序么?那好,我就从所有序列中先找到最小的,然后放到第一个位置。之后再看剩余元素中最小的,放到第二个位置……以此类推,就可以完成整个的排序工作了。可以很清楚的发现,选择排序是固定位置,找元素。相比于插入排序的固定元素找位置,是两种思维方式。不过条条大路通罗马,两者的目的是一样的。代码 for(int i=0; i<v.size(); i++){ int min = v[i]; int temp; int index = i; ... 阅读全文
posted @ 2012-02-29 12:45 Areas 阅读(216) 评论(0) 推荐(0) 编辑
摘要:思想同之前介绍的两种排序方式一样,冒泡排序也是最简单最基本的排序方法之一。冒泡排序的思想很简单,就是以此比较相邻的元素大小,将小的前移,大的后移,就像水中的气泡一样,最小的元素经过几次移动,会最终浮到水面上。举例分析说明一下,如下数据:2 7 4 69 1首先比较最后两个数字,发现1比9小,于是前移2 7 46 19然后比较6和12 74 16 9 继续前移,然后是4和127 14 6 9 7和1比较2 17 4 6 9 2和112 7 46 9至此,第一趟冒泡过程完成,最小的元素1被移到第一个,不再参与后面的排序过程。下一趟冒泡过程同理,比较6和9,以此类推,最终得到结果。代码 ... 阅读全文
posted @ 2012-02-29 12:40 Areas 阅读(195) 评论(0) 推荐(0) 编辑
摘要:思想插入排序的思想有点像打扑克抓牌的时候,我们插入扑克牌的做法。想象一下,抓牌时,我们都是把抓到的牌按顺序放在手中。因此每抓一张新牌,我们都将其插入到已有的排好序的手牌当中,注意体会刚才的那句话。也就是说,插入排序的思想是,将新来的元素按顺序放入一个已有的有序序列当中。举个例子可能更容易理解一些,假设有这样一系列数字: 824 9 3 6 首先我们考虑数字2,假设后面的数字不存在(手中只有一张8,又抓来了2),那么显然2应该放在8的前面。 2 849 3 6 又抓来了一张4,现在大家都知道应该怎么办了吧? 2 4 893 6 又来了个9,没错,正好不用换顺序 2 4 8 936 同样的... 阅读全文
posted @ 2012-02-29 12:38 Areas 阅读(242) 评论(0) 推荐(0) 编辑
摘要:今天介绍快速排序,这也是在实际中最常用的一种排序算法,速度快,效率高。就像名字一样,快速排序是最优秀的一种排序算法。思想快速排序采用的思想是分治思想。快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n-1个元素也调整到排序后的正确位置。最后每个元素都是在排序后的正 确位置,排序完成。所以快速排序算法的核心算法是分区操作,即如何调整基准的位置以及调整返回基准的最终位置以便分治递归。举例说明一下吧,这个可能不是太好理解。假设 阅读全文
posted @ 2012-02-29 12:37 Areas 阅读(203) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示