数据结构:DFS
文章平均质量分 65
skajre
这个作者很懒,什么都没留下…
展开
-
uva 572 Oil Deposits
#include#include#includeusing namespace std;const int maxn=100+5;char pic[maxn][maxn];int buf[maxn][maxn];int m,n;void dfs(int r,int c,int id){ if(r=m||c=n) return ; if(pic[r][c]!='@'原创 2016-05-25 19:45:42 · 191 阅读 · 0 评论 -
UVA 1374 Power Calculus(IDA*)
之前用普通dfs做的,然后只看了书上的翻译,没看题目,然后就坑了,这题之前产生的x^y都是可以用的,我一开始做以为只能平方,加一和减一。#includeint max(int a,int b) {return (a>b)?a:b;}int n,a[20];int maxdd=13;bool dfs(int d,int maxd){ if(a[d]==n) return tru原创 2016-10-08 14:10:34 · 218 阅读 · 0 评论 -
UVA 1377 Ruler(dfs)
这题目自己写一直WA,后来发现正确搜索枚举的刻度并不一定是题目中给你的,而可能是两个刻度中间隔的,枚举完整之后答案就会完备而且可能会更优。#include#include#include#include#includeusing namespace std;const int maxn=50+5;int vis[maxn],d[maxn],id[1000000+10],a[maxn]原创 2016-10-08 12:49:36 · 279 阅读 · 0 评论 -
UVA 1267 Network(dfs)
先把s节点作为根节点,建立一棵树,k层以上是不用管的,把k层以下的叶子结点放到node数组中,最下面的叶子结点网上走k-1层,然后当前节点作为根,建树,重复循环知道所有的点都没覆盖为止。//// main.cpp// Richard//// Created by 邵金杰 on 16/9/30.// Mail:1016427040@qq.com or jasonshaosjj@gm原创 2016-09-30 13:03:12 · 222 阅读 · 0 评论 -
UVA Chinese Mahjong(暴力枚举+模拟)
每种牌只有34种,所以可以直接暴力枚举,然后先找出两张做将,然后接下来枚举三张做刻子或顺子就可以了。//// main.cpp// Richard//// Created by 邵金杰 on 16/9/29.// Mail:1016427040@qq.com or jasonshaosjj@gmail.com// Copyright © 2016年 邵金杰. All righ原创 2016-09-29 19:27:03 · 259 阅读 · 0 评论 -
UVA 1352 Colored Cubes(暴力搜索枚举)
一个正方体只要确认上顶面和前面的两个面就能被确定下来,那么上顶面有六种情况,在上顶面被确认的前提下,前面有四种情况,所以一个正方体通过旋转一共有24中姿态,只要把这可能的26种姿态的排列,打印出来,然后在主函数里枚举匹配即可。下面是枚举可行排列的代码:#include#include#include#includeusing namespace std;int Left[6]={4,原创 2016-09-29 13:29:28 · 201 阅读 · 0 评论 -
UVA 10825 Anagram and Multiplication(暴力枚举)
这题用next_permutation也能过,之前子集写枚举全排列,然后用暴力方法配对写崩了= =。需要注意的只有一点,因为枚举的是最优一位,所以最后一位是固定的,枚举全排列也是枚举第前m-1位的全排列。#include#include#include#includeusing namespace std;const int maxn=10;const int maxm=400+1原创 2016-10-11 15:13:07 · 314 阅读 · 0 评论 -
HDU 1010 Tempter of the Bone(dfs+奇偶剪枝)
//// main.cpp// Richard//// Created by 邵金杰 on 16/9/24.// Copyright © 2016年 邵金杰. All rights reserved.//#include#include#include#includeusing namespace std;const int maxn=10+5;char m原创 2016-09-24 23:35:17 · 149 阅读 · 0 评论 -
HDU 5887 Herbs Gathering(01背包搜索)
#include#include#include#includeusing namespace std;const int maxn=100+10;typedef long long ll;ll w[maxn],v[maxn];ll r[maxn];ll n,k;ll ans,t;int cmp(const int i,const int j) {return (double原创 2016-09-20 23:58:15 · 186 阅读 · 0 评论 -
POJ 3256 Cow Picnic(DFS)
水题,dfs搜索。//// main.cpp// Richard//// Created by 邵金杰 on 16/8/14.// Copyright © 2016年 邵金杰. All rights reserved.//#include#include#include#includeusing namespace std;int arrivetime[10原创 2016-08-14 10:45:52 · 268 阅读 · 0 评论 -
POJ 1011 Sticks(dfs+剪枝)
//// main.cpp// Richard//// Created by 邵金杰 on 16/8/31.// Copyright © 2016年 邵金杰. All rights reserved.//#include#include#include#include#includeusing namespace std;vector stick;con原创 2016-09-01 11:18:05 · 195 阅读 · 0 评论 -
POJ 3984 迷宫问题
用vector保存路径好像写错了,一直输出错误,但却改不出来,以后确定路径的问题还是用dfs时搜一遍吧。#include#include#include#include#include#includeusing namespace std;int a[10][10],vis[10][10];struct node{ int x,y; node(int x,int y原创 2016-07-20 23:58:25 · 121 阅读 · 0 评论 -
百练 4124 海贼王的伟大航路
这里所需要的剪枝一共有三种1.若走到现在的路程已经大于等于之间扩展的最优路程,则剪枝;2.设一个估计函数,这个估计函数是现在已经还没有走的点,若有c1,c2...cn,则取终点为c1的最短路径,到c2的最短路径....到cn的最短路径,他们之和相加若仍然大于等于之前扩展的最优路程,那么就不用继续扩展这条路了;3.设定一个状态,这个状态定义了f(v,s),v代表目前已经走到过的城市终原创 2016-07-20 21:38:42 · 883 阅读 · 0 评论 -
POJ 1724 ROADS
#include#include#include#include#includeusing namespace std;struct node{ int v,l,t;};const int maxn=100+10;const int maxl=10000+10;vector p[maxn];int k,n,r;int cost,bestcost;int vis[m原创 2016-07-20 20:35:33 · 194 阅读 · 0 评论 -
POJ 1190 生日蛋糕
主函数尽量少写,都放到dfs里面去#include#include#include#include#includeusing namespace std;const int maxn=20+5;int minV[maxn],minA[maxn],maxV[maxn];int area,bestarea=100000000;int m,t;int maxVforNRH(int n原创 2016-07-20 08:47:11 · 210 阅读 · 0 评论 -
POJ 1164 The Castle
#include#include#include#includeusing namespace std;int d[55][55],vis[55][55];int c;void dfs(int i,int j){ if(vis[i][j]) return ; c++; vis[i][j]=1; if(!(d[i][j]&1)) dfs(i,j-1);原创 2016-07-19 20:09:08 · 188 阅读 · 0 评论 -
ZOJ 2110 Tempter of the Bone
比赛的时候写的#include#includeint flag,sx,sy,ex,ey,num;int n,m,t,vis[10][10];int dx[]={-1,0,1,0};int dy[]={0,-1,0,1};char map[10][10];int abs(int p){ return p>=0?p:-p;}void dfs(int x,int原创 2016-06-11 07:49:50 · 214 阅读 · 0 评论 -
邻接表的dfs遍历
//输入样例/* 5 0 AB AD AC CD BE DE *///输出/* Please Input the edge x-->y:AB AD AC CD BE DE A 1 2 3 B 0 4 C 0 3 D 0 2 4 E 1 3 *///dfs测试数据/* 8 0 Please Input the edge x-->y:AB原创 2016-05-06 18:26:47 · 938 阅读 · 0 评论 -
HDU 1213 How many table(dfs)
#includeusing namespace std;const int maxn=1000+5;bool map[maxn][maxn],used[maxn];int n,m;void dfs(int u){ for(int v=1;v<=n;v++){ if(map[u][v]&&!used[v]){ used[v]=true;原创 2017-01-24 12:15:00 · 282 阅读 · 0 评论