搜索
普通网友
这个作者很懒,什么都没留下…
展开
-
二分查找 (代码五行)
算法思想: (1)首先确定该区间的中点位置: mid = (low+high)/2 (2)然后将待查的key值与R[mid].key比较:若相等,则查找成功并返回此位置,否则须确定新的查找区间,继续二分查找,具体方法如下: ①若a【mid】>key,则由表的有序性可知a[mid..n].keys均大于K,因此若表中存在关键字等于原创 2012-06-03 22:15:25 · 1921 阅读 · 0 评论 -
二分查找(递归和非递归)
/* 二分查找也叫折半查找,要求查找的序列必须是有序的。 1.将给定的关键字与中间位置的纪录比较,如果相等则查找成功. 2.若不等则利用关键字的位置对表分成前后两个字表,如果key比中间位置关键字小, 则下一次只在前一子表中继续查找,否则在后一子表中查找 3.重复1.2 知道查找成功,或者当前查找区间为空,则查找失败 二分查找也可以递归 */ //非递归 #include原创 2012-11-17 17:04:26 · 332 阅读 · 0 评论 -
hdu 1548 a strange lift
/*在一个N层高的楼有一个奇怪的电梯,在每一层只能上升或下降一个特定的层数, 中间不会停止,在给定的条件下,问能不能到达指定楼层,可以到达的话返回转操作次数, 不可以的话返回-1. 解题思想: 这是一道简单的搜索题,广度搜索 */ #include #include using namespace std; int main() { int N,A,B,x,y,i原创 2013-03-20 12:13:14 · 536 阅读 · 0 评论 -
hdu 2717Catch That Cow
/* BFS +1 -1 *2 三个方向搜索 */ #include #include #include using namespace std; int N,K; // 起点 终点 bool isVisited[200001]; //标记是否访问过 struct Node { int data; //point int原创 2013-03-20 17:11:43 · 516 阅读 · 0 评论 -
hud 1016 prime ring problem
#include using namespace std; int iArr[21] = {0,1}; int end,top; int N,icase = 0; bool isexist(int x) { for(int i = end; i { if(x == iArr[i]) return true;// 存在 } return false;原创 2013-04-23 14:53:25 · 629 阅读 · 0 评论 -
hdu 1035 robot motion
题目的意思就是给一个初始位置,按着指示往下走,计算出走出方格的步数 或者遇到循环的圈子计算圈子的步数和到达圈子的步数#include using namespace std; struct node { char instr; //指示方向 int step; //步骤 }; node Arr[11][11]; int iN,iM,istart_pos; //row,column,开始原创 2013-04-23 23:23:59 · 463 阅读 · 0 评论 -
KMP 算法 字符匹配
#include using namespace std; void Next(char* s,int* next,int len) { /* 获得next数组其实相当于自身与自身做匹配。 初始i=0,j=-1;next[0]=-1; 在while中,if(j==-1 || s[i] = s[j]) 当j=-1 1.第一次进入循环,j++,i++ 做s[0]与原创 2014-05-20 17:01:07 · 419 阅读 · 0 评论 -
Matrix:The matrix in spiral order
/** Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order. For example, given the following matrix: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] You s原创 2015-08-19 14:17:43 · 389 阅读 · 0 评论