
算法与数据结构
hzylmf
这个作者很懒,什么都没留下…
展开
-
简单回溯N皇后问题
//回溯法,从第0行开始摆放皇后,后面每次把皇后摆放到第curRow行i位置时, //就判断是否和前面已经摆放好了的皇后冲突 //vis[curRow]=i表示尝试把第curRow行的皇后摆放到第i列 //判断行列对角线冲突方法: //vis[curRow]==vis[j]则列冲突 //curRow+(-)vis[curRow]==j+(-)vis[curRow]则对角线冲突 #include原创 2013-05-13 08:18:32 · 1150 阅读 · 0 评论 -
第四届蓝桥杯C/C++本科A组-大臣的旅费
题目描述: 很久以前,T王国空前繁荣。为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市。 为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首都直接或者通过其他大城市间接到达。同时,如果不重复经过大城市,从首都到达每个大城市的方案都是唯一的。 J是T国重要大臣,他巡原创 2013-05-15 00:48:42 · 2016 阅读 · 0 评论 -
宽度搜索优先算法搜索迷宫最短距离
BFS介绍: 宽度搜索优先按照距开始状态由近及远的顺序进行搜索,因此可以很容易用来求最短路径、最少操作之类问题的答案。它是按照开始状态->只需1次转移就能到达的所有状态->只需2次就能到达的所有状态->...这样的顺序进行搜索。对于同一个状态,bfs只经过一次,时间复杂度为O(状态数*转移方式)。BFS搜索利用了队列,搜索时首先将初始状态添加对队列中,此后不断从队列中取出状态,并把从该状态可以转原创 2013-10-05 20:43:01 · 2162 阅读 · 0 评论 -
大数乘法——数组实现
#include #include #include #include #define MAX 1000 using namespace std; void multiply(const char a[],const char b[],int result[]) { int lenA=strlen(a),lenB=strlen(b); int c,k=0,n=0; for原创 2013-11-11 18:01:48 · 1618 阅读 · 0 评论 -
第四届蓝桥杯预赛试题之振兴中华及扩展
将题目换一种思路描述很简单,就是给定一个N*M的方格,从方格的左上角走到右下角,只能横着走或者竖着走,求路径条数。由于题目给定的数据范围很小,4*5的方格,故用DFS简单求之,结果为35条。但当N、M>10之后,效率就下降得很厉害,需要换一种思路了。 #include /* 从我做起振 我做起振兴 做起振兴中 起振兴中华 */ using namespace std; int star原创 2013-11-11 17:52:46 · 1602 阅读 · 0 评论 -
XTUOJ-1058 青蛙王子的一种实现
Description 一个王子被巫师诅咒,变成了一只青蛙。500年后的一天,青蛙王子碰到了一个仙女,仙女告诉他,如果他能通过一个简单的测试,她就能帮他解除诅咒。测试是这样子的,仙女要青蛙王子在一条直线上跳跃(青蛙王子最开始站在坐标为0的地方),但只能按照她给定的两种长度跳跃(假设这两种长度王子都能跳到),可以往前或者往后跳,如果能达到指定的地点,那么就通过测试;仙女给定的方式有原创 2014-02-23 22:50:16 · 3448 阅读 · 0 评论 -
并查集在kruskal算法中应用
在无向图论问题中,经常需要得到图的最小生成树,用于解决这个问题有两个经典算法:kruskal和prim,前者用于稀疏图,后者用于稠密图。kruskal算法的核心思想是贪心,按照权值顺序,先选取权值最小的边,再选取权值次小的边,依此类推,直到所选边足够把所有的点连接起来,这时边数为节点数-1。但有个选边的前提,那就是待选边不能和已选边组成回路。至此,kruskal算法要实现的问题便成了图的连通分支判原创 2015-11-19 13:27:32 · 2230 阅读 · 0 评论 -
递归和非递归方式合并有序链表
给定两个有序单链表,合并成一个新的有序链表,分别用递归和非递归的方式实现如下: package algorithm; public class MergeSortLinkList { public static void main(String[] args) { Node[] nodes = createData(); // Node node = mergeByRecursio原创 2016-09-03 12:56:43 · 1235 阅读 · 0 评论