搜索
wjsay
白色的蜻蜓,在空中忘记了飞行。
我的 github ID: zzuwenjie
展开
-
练习深度优先搜索
其实深度优先搜索用递归实现也不难,算法这种东西,理解不深,过一段时间就忘了。BNU Personal Training 2017清明(3) G题#define _CRT_SECURE_NO_WARNINGS#include #include #include #include #include #include #include #include #include原创 2017-04-05 15:25:41 · 549 阅读 · 0 评论 -
深度优先搜索,DFS,UVA572,连通分支数
例题链接=>UVA572图论之DFS,一向是惧怕图论的,所以一直没贴过关于图的代码。时间复杂度O(m*n),其中m, n 为邻接矩阵的行数和列数,下面代码中的dfs()函数用于找无向图中的连通连通分支数。#define _CRT_SECURE_NO_WARNINGS#include #include const int maxn = 100 + 5;char pic[maxn]转载 2017-04-05 13:22:36 · 332 阅读 · 0 评论 -
A*算法 hdu1043 Eight 人工智能算法, 还有康拓展开得hash值
hdu1043这道八数码难题,有很多种境界解法。之前网上的博友互相抄袭的代码:离线搜索出所有状态的解,但是这种离线算法需要53MB左右的空间,显然MLE.杭电数据加强后就AC不了了。后来在网上搜到了人工智能在线算法,强行正面搜索,解决了内存限制的问题。时间1s左右。下面这个链接里面有八数码的八种境界。前两种境界我想到了。后面就……URLA*算法,摘自网友。若看不懂,翻书A* 算法的原创 2017-08-11 20:03:41 · 742 阅读 · 0 评论 -
CF The Meeting Place Cannot Be Changed 对时间进行二分
看CF Round403 讨论区里有说对距离进行二分的,二分假设可能的位置,计算所需时间,缩小时间。开始是这样想的,不过没能实现(now)。后来,我总算学会了如何去……算,对时间进行二分,缩小时间至所有人刚好可以到达。对于每一个假设的时间,计算出所有人可达到区间的交集,若有交集,说明时间给多了:反之,少了。不多不少时就是所需的最少时间。B. The Meeting原创 2017-07-26 09:29:10 · 579 阅读 · 0 评论 -
hihocoder offer收割19th 数组重排3 八进制位操作 状态压缩
hihocoder offer收割19th 数组重排3 hiho1539哈哈,利用宽度优先搜索,求初态移到有序终态的最少步数。由于最多八个数字,8是个很好的数字,刚好可以用3个bit位存下不大于8的数字,8个不大于的数字可以用24比特位存下(一个int类型就可以存下一个数组的状态了~)。所有状态不可能超过数组长度的阶乘,因为有的状态达不到。比如21,不可能转化为12。(43210)D 这个原创 2017-07-24 09:02:00 · 611 阅读 · 0 评论 -
树形动态规划 hdu1502 poj2342 Anniversary party
Anniversary party一向惧怕DP动态规划和图论,而树形DP又把DP和树图结合起来了。1、什么是树型动态规划 顾名思义,树型动态规划就是在“树”的数据结构上的动态规划,平时作的动态规划都是线性的或者是建立在图上的,线性的动态规划有二种方向既向前和向后,相应的线性的动态规划有二种方法既顺推与逆推,而树型动态规划是建立在树上的,所以也相应的有二个方向: 1、叶->根原创 2017-07-29 23:41:14 · 460 阅读 · 0 评论 -
素数环
素数环NOJ1104回溯法应用,显然解空间是一个排列集,n最大为16,最大解空间为16!= 2*10^13(阶乘)。用next_permutation生成每排列,然后判断是否为素数环,肯定会超时(大于每秒百万次计算了)。可以用回溯法,适当减枝。参考《算法竞赛入门经典》 by myorange 2017-4-28 19:20:22Description输入正整数n,把整数1,原创 2017-04-28 19:20:47 · 847 阅读 · 0 评论 -
最佳运动员配对问题-婚姻搭配-最小重量机器设计问题-回溯法
回溯法练习集合最佳运动员配对问题(就是婚姻搭配问题)#include #include #include #include using namespace std;const int maxn = 112;int n;int p[maxn][maxn], q[maxn][maxn], select[maxn];//n对男女的婚姻搭配问题,求最大满意程度//解空间:排列集原创 2017-05-12 17:11:32 · 1325 阅读 · 0 评论 -
分支限界算法-BFS
分支限界算法类似于宽度优先搜索算法模板定义根节点t0为初始化扩展节点根节点t0入队while(队不空) { 出队 --t; for (j = r0; j <= rn; ++j) { 对 t 利用规则j发展新节点tj; 利用限界函数判断tj是否可行; if(可行) { 若是目标解,找到结果,return 否则进队 } } } 上午上原创 2017-05-23 15:09:15 · 2011 阅读 · 0 评论 -
宽度优先搜索(记录路径)
迷宫问题 + 记录路径 + 结构体数组(模拟队列,因为我用不好指针记录前驱节点)从终点向始点宽搜(其实这一题是深搜,无所谓啦)。每拓展一层,这一层的节点各自保存它是由哪个节点拓展来的。Description定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,转载 2017-04-12 11:06:57 · 3664 阅读 · 0 评论 -
图形
while(cin ....)只能够读入一个例子,while(~scanf())可以读到文件结束,亲测。读入整数时,后面的回车键留在键盘缓冲区,若接着用gets()读入时,回车键会被其吃掉。Windows下比较文件命令fc,Linux下diff 或sdiff。hihocoder 1495 矩形分割把图形扩大一倍,就可以用深度优先搜索找连通块了,就不会出现平行边那种情况了2 2原创 2017-04-21 20:24:05 · 250 阅读 · 0 评论 -
杭电1010,深度优先搜索+减枝
使用深度优先搜索,但不是判断能否搜到,也不是找最长路径,而是判断是否有一条刚好长度为T的路。递归实现(虽然很容易超时)链接:hdu1010Problem DescriptionThe doggie found a bone in an ancient maze, which fascinated him a lot. However, when he picked it u转载 2017-04-05 22:57:01 · 434 阅读 · 0 评论 -
合并两个数组,新数组第k小的元素---二分--九度OJ1534
题目1534:数组中第K小的数字时间限制:2 秒内存限制:128 兆特殊判题:否提交:2005解决:436题目描述:给定两个整型数组A和B。我们将A和B中的元素两两相加可以得到数组C。譬如A为[1,2],B为[3,4].那么由A和B中的元素两两相加得到的数组C为[4,5,5,6]。现在给你数组A和B,求由A和B两两相加转载 2017-09-02 15:31:38 · 525 阅读 · 0 评论