随笔分类 -  Algorithm---Search ( DFS & BFS & A* )

摘要:不知道为什么比赛的时候一直想着用DFS 来写一直想剪枝结果还是TLE = =这题数据量不大,又是问最优解,那么一般来说是用 BFS 来写int commandi[4] = {1, 2, 3, 4};我定义了一个方向数组,其实题目意思中的,指针移动还有操作版的变化本质上都是指针的移动在此只需要 额外定... 阅读全文
posted @ 2015-04-13 17:09 Jeremy Wu 阅读(238) 评论(0) 推荐(0) 编辑
摘要:这题点的个数(#include #include #include #include #include #include #include #include #include #include #include #include #define Max(a,b) (((a) > (b)) ? (a)... 阅读全文
posted @ 2015-03-15 13:53 Jeremy Wu 阅读(195) 评论(0) 推荐(0) 编辑
摘要:给一个N 表示1 2 3 ...N求出所有 zero sum的情况【简单Dfs 即可】 运算结果的时候我使用了一个stack...比如N = 7那么要求输出1+2-3+4-5-6+71+2-3-4+5+6-71-2 3+4+5+6+71-2 3-4 5+6 71-2+3+4-5+6-71-2-3-4... 阅读全文
posted @ 2015-02-21 21:44 Jeremy Wu 阅读(200) 评论(0) 推荐(0) 编辑
摘要:我还是用了很朴素的暴力匹配A了这题,不得不感叹USACO时间放的好宽.../*ID: wushuai2PROG: hammingLANG: C++*///#pragma comment(linker, "/STACK:16777216") //for c++ Compiler#include #in... 阅读全文
posted @ 2015-02-14 16:54 Jeremy Wu 阅读(242) 评论(0) 推荐(0) 编辑
摘要:使用排列组合,遍历所有可能的情况C(1)+C(2)+C(3)……C(n)= 2^G种组合数据规模不大,暴力过去最多也就是2^15 = 23768种情况所以就暴力咯,不过还是Debug了一会Source Code:/*ID: wushuai2PROG: holsteinLANG: C++*///#pr... 阅读全文
posted @ 2015-02-14 15:42 Jeremy Wu 阅读(525) 评论(0) 推荐(0) 编辑
摘要:好久好久,都没有写过搜索了,看了下最近在CF上有一道DFS水题 = =数据量很小,爆搜一下也可以过额外注意的就是防止往回搜索需要做一个判断。Source code://#pragma comment(linker, "/STACK:16777216") //for c++ Compiler#incl... 阅读全文
posted @ 2015-02-06 22:39 Jeremy Wu 阅读(254) 评论(0) 推荐(0) 编辑
摘要:描述农夫约翰爱好在周末进行高能物理实验的结果却适得其反,导致N个虫洞在农场上(2 B . 贝茜会穿过B,A,+ . . . . 然后再次穿过B农夫约翰知道他的农场里每个虫洞的确切位置。他知道贝茜总是向 +x 方向走进来,虽然他不记得贝茜的当前位置。请帮助农夫约翰计算不同的虫洞配对... 阅读全文
posted @ 2015-01-27 20:06 Jeremy Wu 阅读(695) 评论(0) 推荐(0) 编辑
摘要:根据Rex 的思路才知道可以这么写。题目意思还是很好理解的,就是找到当前雇员最近的任务。做法是,可以开辟一个 tim 变量,每次有雇员得到昕任务时候 ++tim然后取寻找最近的任务的时候写一个搜索就可以核心代码: while(num != -1){ ... 阅读全文
posted @ 2014-12-14 21:17 Jeremy Wu 阅读(133) 评论(0) 推荐(0) 编辑
摘要:题意:一棵树,给出每个点的权值和每条边的长度,点j到点i的代价为点j的权值乘以连接i和j的边的长度。求点x使得所有点到点x的代价最小,输出虽然还是不太懂树形DP是什么意思,先把代码贴出来把。这道题目的做法是:先进行一次DFS,以每个节点为根,求出它下面节点到它的数量和。再进行一次DFS,以每个节点为... 阅读全文
posted @ 2014-11-11 21:53 Jeremy Wu 阅读(192) 评论(0) 推荐(0) 编辑
摘要:简单DFS 1 //#pragma comment(linker, "/STACK:16777216") //for c++ Compiler 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include ... 阅读全文
posted @ 2014-09-23 14:01 Jeremy Wu 阅读(162) 评论(0) 推荐(0) 编辑
摘要:3A的题目,第一次TLE,是因为一次BFS起点到终点状态太多爆掉了时间。第二次WA,是因为没有枚举蛇的状态。解体思路:因为蛇的数目是小于5只的,那就首先枚举是否杀死每只蛇即可。然后多次BFS,先从起点到第一把钥匙,不能往回走,要用VIS数组标记。第二次从第一把钥匙走到第二把钥匙。最后一次从最后一把钥... 阅读全文
posted @ 2014-09-23 13:58 Jeremy Wu 阅读(284) 评论(0) 推荐(0) 编辑
摘要:vector 向量 相当于一个数组 在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacituy()函数返回的大小,当超过此分配的空间时再整体重新放分配一块内存存储,这给人以vector可以不指定vecto... 阅读全文
posted @ 2014-08-08 09:21 Jeremy Wu 阅读(273) 评论(0) 推荐(0) 编辑
摘要:首先学习一下lower_bound()函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置举例如下:一个数组number序列为:4,10,11,30,69,70,96,100.设要插入数字3,9,111.pos为要插入的位置的下标则pos = lower_bound( number, number + 8, 3) - number,pos = 0.即number数组的下标为0的位置。pos = lower_bound( number, number + 8, 9) - number 阅读全文
posted @ 2014-04-07 10:17 Jeremy Wu 阅读(264) 评论(0) 推荐(0) 编辑
摘要:STL__queue_的应用调用的时候要有头文件: #include 或 #include + #include 详细用法:定义一个queue的变量 queue que 查看是否为空范例 que.empty() 是的话返回1,不是返回0;从已有元素后面增加元素(入队) que.push() 现有元素的个数 que.size()显示第一个元素 que.front()显示最后一个元素 que.back()清除第一个元素 (出队) que.pop() 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define ... 阅读全文
posted @ 2014-04-05 11:22 Jeremy Wu 阅读(239) 评论(0) 推荐(0) 编辑
摘要:问题 B: 逃离迷宫二时间限制:1 Sec内存限制:128 MB提交:12解决:5[提交][状态][讨论版]题目描述王子深爱着公主。但是一天,公主被妖怪抓走了,并且被关到了迷宫。经过了常人难以想像的努力,王子到了这个迷宫,但是迷宫太过复杂,王子想知道到底有没有路能通到公主的所在地,同时还要输出王子到公主的最短距离,机智的你一定能帮助他解决这个问题。输入有多个测试数据。每个测试数据的第一行是2个整数n,m (0 2 #include 3 #include 4 5 char Graph [80][80]; 6 int n,m,startx,starty; 7 int Dir [4][2] = {. 阅读全文
posted @ 2014-03-02 22:46 Jeremy Wu 阅读(1440) 评论(0) 推荐(1) 编辑
摘要:目的:输入:3输出:1 2 31 3 22 1 32 3 13 1 23 2 1代码如下: 1 #include 2 int a[20],b[20],n; 3 void dfs(int t) 4 { 5 int i,j; 6 if (t>n)//循环终止条件 , 输出结果 7 { 8 for(j=1;j<n;j++) 9 printf("%d ",a[j]);10 printf("%d\n",a[n]);11 }12 else for (i=1;i<=n;i++)13 if (b[i... 阅读全文
posted @ 2013-12-19 22:30 Jeremy Wu 阅读(308) 评论(0) 推荐(0) 编辑
摘要:问题 D: lisp表达式求值时间限制:1 Sec内存限制:128 MB提交:105解决:43[提交][状态][讨论版]题目描述lisp是一种非常古老的计算机语言,是由约翰·麦卡锡在1960年左右创造的一种基于λ演算的函数式编程语言,其语法如下:(+ 2 3 4 5)表示2+3+4+5,其值为14(* 2 3 5)表示2*3*5,其值为30减法可以表示为:(- 2 3 4)表示:2-3-4=-5即括弧中第一个符号为运算符,后面是操作数,改运算也可以嵌套,比如(* (+ 2 3) 6)表示先计算2+3=5,然后再5*6=30麦卡锡当初提出了一套理论,其核心是一个eval函数,1958年 阅读全文
posted @ 2013-12-19 01:04 Jeremy Wu 阅读(871) 评论(0) 推荐(0) 编辑
摘要:首先我想吐槽的是,在CSDN上搞了好久还是不能发博客,就是点下发表丝毫反应都没有的,我稍微百度了几次还是没有找到解决方法,在CSDN的BBS上也求助过管理员但是没有收到答复真是烦躁,导致我新生入学以来没能很好的在博客上记录点什么,有些想法只是在脑中灵光一现然后事后就不好想起来了。后来发现了除了CSDN还有ITeye、cnblogs等一些其他优秀的博客网站…。废话不多说了,现在开始吧。背景:在大一上学期的第六次C语言课后练习中碰到了这样一题放苹果(POJ1664)题目描述把M个同样的苹果放在N个同样的盘子里,允许有盘子空,问共有多少种不同分法注意:5,1,1和1,5,1是同一种。输入第一行是.. 阅读全文
posted @ 2013-12-02 17:20 Jeremy Wu 阅读(905) 评论(0) 推荐(0) 编辑

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