2013年7月12日

poj3984迷宫问题

摘要: 一个5 × 5的二维数组,表示一个迷宫。其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。很简单的一道题,迷宫问题,一般都选择两种优先搜索方法去解,最短路线问题应该要用BFS,而不是DFS. 这道题目还需要记录路线,所以还加有存储父节点的一个空间。贴代码如下(发现我只要是这两种方法,代码写的都不短啊):#include#include#includeusing namespace std;typedef class{public: int x,y; int fx,fy;}vertex;int maze[5][5];int . 阅读全文

posted @ 2013-07-12 09:46 soyscut 阅读(296) 评论(0) 推荐(0) 编辑

2013年7月11日

poj2488骑士之旅

摘要: 题目大意:国际象棋里面的马,有那么8种跳法,然后题目给出一个棋盘的大小p*q, 求有没有路线可以使得这个马能把整个棋盘的格全部走一遍,有的话按照字典序将第一条路线打印出来。注意:国际象棋是行是数字,列是字母,按照字典序A1B3....,是需要按照先列后行来处理的。因为要找一条路径出来,所以考虑深度优先(DFS)贴一下烂代码(o(╯□╰)o):#include#includeusing namespace std;int chess[27][27];int path;bool exist=0;string rec;void DFS(int y,int x,int szy,int szx){ .. 阅读全文

posted @ 2013-07-11 21:24 soyscut 阅读(410) 评论(0) 推荐(0) 编辑

两种优先搜索方法简述

摘要: 这两天刷了几道OJ上的搜索题,主要是深度优先搜索和广度优先搜索,简单的总结如下,深度优先搜索法(Depth-first Search):Depth-first search(DFS) is an algorithm for traversing or searching a tree, tree structure, or graph.One starts at the root (selecting some node as the root in the graph case) and explores as far as possible along each branch before 阅读全文

posted @ 2013-07-11 21:08 soyscut 阅读(348) 评论(0) 推荐(0) 编辑

2013年7月9日

poj1837挂砝码

摘要: 解法(背包DP问题)(下为转)其实感觉 像此题这种类型的并不属于dp范畴虽然程序看起来使用的是递推这一过程,但总不能说开个二重循环就是dp吧如果只从求解上来讲(不考虑数据值的范围), 只有枚举这唯一途径, 而此题的复杂度为O(20^20), 大约等于 10^26, 微机是很难在短时间内求解的。而此题还有另一个限制, 就是数据值的范围, 虽然状态数那么多, 但是它们的范围有限这个时候, 状态产生大量重复, 于是, 程序可以优化为压缩这些重复状态, 从而减少开销在实现的过程中, 确实划分了阶段, 但这个过程更像是枚举, 优化过后的枚举在朴素枚举当中, 阶段数与复杂度呈指数关系, 而在此题这种特殊情 阅读全文

posted @ 2013-07-09 15:04 soyscut 阅读(221) 评论(0) 推荐(0) 编辑

2013年3月11日

算法分析课程笔记(二)

摘要: 递推关系式的一般式的求解一、线性齐次递推式的求解形如 f(n)=a1f(n-1)+....+akf(n-k)的递推式(注意没有常数项)称为齐次递推式我们只考虑1阶和2阶的情况:一阶 f(n)=af(n-1),则递推式为 f(n)=af(n-1)=a2f(n-2)...=anf(0)二阶 f(n)=a1f(n-1)+a2f(n-2), 则特征方程变为 x2-a1x-a2, 令方程的根为r1,r2,则递推式的解为f(n)=c1r1^n+c2r2^n if r1!=r2 OR f(n)=c1r^n+c2*n*r^n if r1==r2*这个可以推Fibonacci数列的表达式!二、非齐次递推式的求解 阅读全文

posted @ 2013-03-11 21:52 soyscut 阅读(307) 评论(0) 推荐(0) 编辑

2013年3月4日

算法分析课程笔记(一)

摘要: 教材:算法设计技巧与分析第一课:定理:No Free lunch-- For A1, A2, if exist Problem P1, s.t. A1>A2; then exist Problem P2, s.t. A1<A2介绍了三种排序算法(选择排序, 插入排序,合并排序)选择排序:SELECTIONSORTfor i=1 to n-1 k=ifor j=i+1 to n if A[j]<A[k] then k=jend for if k!=i then exchange A[i],A[k]end for性能(比较次数和赋值次数):比较 n-1+n-2+....+1=(n 阅读全文

posted @ 2013-03-04 22:44 soyscut 阅读(214) 评论(0) 推荐(0) 编辑

导航