09 2014 档案

摘要:直线上有N个点,点i的位置是Xi。从这N个点中选择若干个点,给它们加上标记。对每个点,其距离R内的区域里必须有带有标记的点(自己本身带有标记的点,可以认为与其距离为0的地方有一个带有标记的点)。在满足这样的条件下,至少多少个点被加上标记。从最左边的点开始,距离为R以内的最远的点,加上第一个标记后,剩... 阅读全文
posted @ 2014-09-30 20:30 bournet 阅读(181) 评论(0) 推荐(0) 编辑
摘要:给定长度为N的字符串S,构造长度为N的字符串T,起初T是空串,反复从S的头部或者尾部删除一个字符,加到T的尾部。目标是构造字典序尽可能小的T。尝试如下贪心算法:不断取S头部和尾部较小的字符放到T的尾部。考虑S头部和尾部字符相同的情况。有如下算法:按照字典序比较S和将S反转后的字符串S‘;如果S较小,... 阅读全文
posted @ 2014-09-30 17:29 bournet 阅读(394) 评论(0) 推荐(0) 编辑
摘要:给定大小为N*M的迷宫,求出起点到终点的最小步数。输入输出22 1 #include 2 #include 3 #include 4 using namespace std; 5 6 #define MAX_N 100 7 #define MAX_M 100 8 9 const int I... 阅读全文
posted @ 2014-09-30 11:26 bournet 阅读(217) 评论(0) 推荐(0) 编辑
摘要:希尔排序(Shellsort)的名称源于它的发明者Donald Shell,该算法是冲破二次时间屏障的第一批算法之一。不过,自从它最初被发现,又过了若干年才证明了它的亚二次时间界。它通过比较相距一定间隔的元素来工作;各趟比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止。希尔排... 阅读全文
posted @ 2014-09-28 20:59 bournet 阅读(218) 评论(0) 推荐(0) 编辑
摘要:对于数组A[N]的插入排序由N-1趟排序组成。对于P=1趟到P=N-1趟,插入排序保证从位置0到位置P上的元素已为排序状态。实际上插入排序利用了这样的事实:位置0到位置P-1上的元素是已排过序的。在第P趟,我们将位置P上的元素向左移动到它在前P+1个元素的正确位置上。插入排序的过程可以用下图表示。具... 阅读全文
posted @ 2014-09-28 19:47 bournet 阅读(150) 评论(0) 推荐(0) 编辑
摘要:有一个大小为N*M的园子,雨后积水。八连通的积水被认为是连接在一起的,求出园子里共有多少水洼(八连通是下图中相对W的*部分)。* * **W** * *分析:从任意的W开始,不停地把邻接的部分用'.'代替。1次dfs后与初始的W连接的所有的W都被替换成'.',即这个水洼消失了。因此直到图中不存在W为... 阅读全文
posted @ 2014-09-27 11:05 bournet 阅读(327) 评论(0) 推荐(0) 编辑
摘要:深度优先搜索(DFS, Depth-First Search)是搜索的手段之一。它从某个状态开始,不断地转移状态直到无法转移,然后退到前一步的状态,如此不断重复,直至找到最终的解。部分和问题给定整数a1、a2、……、an,判断是否可以从中选出若干个数,使它们的和恰好为k。限制条件1 ≤ n ≤ 20... 阅读全文
posted @ 2014-09-26 21:49 bournet 阅读(144) 评论(0) 推荐(0) 编辑
摘要:1 #include 2 #include 3 using namespace std; 4 5 int main() 6 { 7 string input; 8 while (getline(cin, input)) 9 {10 int Quicks... 阅读全文
posted @ 2014-09-17 11:34 bournet 阅读(101) 评论(0) 推荐(0) 编辑
摘要:1 #include 2 #include 3 using namespace std; 4 5 int main() 6 { 7 int N = 1000000; 8 bool prime[N+1]; 9 for (int i = 0; i > a >> d >> ... 阅读全文
posted @ 2014-09-16 10:34 bournet 阅读(137) 评论(0) 推荐(0) 编辑
摘要:1 #include 2 #include 3 #include 4 using namespace std; 5 6 int main() 7 { 8 int N = 400; 9 //input用来存储输入数据10 int input[N][N];11 ... 阅读全文
posted @ 2014-09-15 23:55 bournet 阅读(160) 评论(0) 推荐(0) 编辑
摘要:首先生成1000000以内的素数表,采用素数筛选法http://www.cnblogs.com/bournet/p/3972023.html。下面就很简单了。 1 #include 2 #include 3 using namespace std; 4 5 int main() 6 { 7 ... 阅读全文
posted @ 2014-09-15 20:54 bournet 阅读(111) 评论(0) 推荐(0) 编辑
摘要:素数筛选法原理就是当i是素数的时候,i的所有的倍数必然是合数。如果i已经被判断不是质数了,那么再找到i后面的质数来把这个质数的倍数筛掉。算法实现 1 #include 2 #include 3 using namespace std; 4 5 int main() 6 { 7 int ... 阅读全文
posted @ 2014-09-15 00:13 bournet 阅读(500) 评论(0) 推荐(0) 编辑
摘要:分析:房间1和2前面是同一个走廊,所以从1移动到2只需要占用一个走廊,房间2和3前面不是同一个走廊,因此从2移动到3需要占用2个走廊。基本思路是开辟一个200的数组,表示所有房间前面的走廊,每个元素初始化为0,如果从m移动到n(假设m 2 #include 3 using namespace st... 阅读全文
posted @ 2014-09-14 16:51 bournet 阅读(126) 评论(0) 推荐(0) 编辑
摘要:1 #ifndef _Tree_H 2 3 struct TreeNode; 4 typedef struct TreeNode *Position; 5 typedef struct TreeNode *SearchTree; 6 7 SearchTree MakeEmpty(... 阅读全文
posted @ 2014-09-09 10:57 bournet 阅读(124) 评论(0) 推荐(0) 编辑