自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 问答 (1)
  • 收藏
  • 关注

原创 POJ3009 Curling 2.0(DFS)

题意:冰壶比赛,球会沿着直线一直运动下去,碰到阻碍会停下,同时阻碍消失,求最小步数要点:DFS的变种,原本的DFS是一步一步的,现在是沿着直线一直下去,其实差不多,就是把直线看成一步就行。因为可以交错,所以不用设visit数组,同时要用回溯法。因为题目上说超过10步就失败,大大减少了时间复杂度,直接搜索每条路线就可以了。15196974Seasonal

2016-02-25 10:21:45 374

原创 POJ3083 Children of the Candy Corn(BFS+DFS)

题意:普通的迷宫求路径,但这题需要输出三个解:1.沿着左边查找,2.沿着右边查找,3.最短路径要点:最短的简单,直接BFS搞定。沿着左边查找和沿着右边查找其实是一个问题,也即是DFS中先遍历左边还是右边,沿着左边查找就把顺时针查找,如果不成功就向右查找,向右查找一次其实是向前,两次向右,三次向后,反之同理。15191443Seasonal3083

2016-02-23 20:25:14 322

原创 POJ2488 A Knight's Journey(DFS)

题意:输入一些棋盘对应的行和列,看骑士(日字)能不能走完整个棋盘,可以从任何地方开始,注意要字典序输出要点:虽然说骑士可以从棋盘上任意一点出发,但因为要按字典序(lexicographically)输出,所以当然从A1出发字典序最小,不用担心为什么任意一点变成A1也行,因为反正是可以走过整个棋盘,那么肯定经过A1,那么其实是连着的一个环,从哪一点出发都无所谓。而且还有对应的走的顺序是要

2016-02-23 14:58:06 390

原创 POJ2251 Dungeon Master(BFS)

题意:要逃出地牢,地牢是三维的,有上下层之分要点:就是将原本二维的BFS转换为三维的就可以了,求最短距离,这种BFS我还是可以做的15188937Seasonal2251Accepted304K32MSC++1469B2016-02-22 22:10:22#include#include#include#

2016-02-22 22:11:45 362

原创 例题6-17 UVa10562 Undraw the Trees(树)

题意:将一棵多叉树转换成括号表示法要点:用先序遍历直接在二维数组内递归,主要是字符的输入判断比较麻烦,还有如果同时用scanf和gets的话,要把scanf后的换行符除去#include#include#include#include#define maxn 250char buf[maxn][maxn];int n;void dfs(int r, int

2016-02-22 12:20:13 309

原创 例题6-16 UVa10129 Play on Words(欧拉回路)

题意:输入一些单词,看是否能将这些单词首尾分别对应相同的排成一个序列要点:欧拉道路,也即是从无向图的一个结点出发走出一条道路,每条边恰好经过一次,俗称一笔画,对于无向图来说:如果一个无向图是连通的(任意一个点出发,通过dfs遍历可得到所以顶点),且最多只有两个度数为奇数的顶点,则一定存在欧拉道路。如果有两个奇点,一定从一个奇点出发一个奇点结束;如果奇点不存在,则可以从任意点出发,一

2016-02-20 22:12:34 451

原创 POJ1094 Sorting It All Out(拓扑排序)

题意:字符拓扑排序,有三种可能的输出情况:1.有环直接输出不能确定2.如果所有的行都读入还是不能确定而且没有环3.没有环而且没有多种情况(入度为0的点只有一个)就可以确定顺序要点:这题还是挺难的,主要是考察了拓扑排序的几种情况:1、可以判断 2、有环出现了矛盾 3、条件不足,不能判断。并且这道题用栈来做了一下,dfs不太能判断是否只有一个解还有如果中间已经满足了输出条件

2016-02-19 12:35:43 369

原创 POJ2367 Genealogical tree(拓扑排序)

题意:就是最简单的拓扑排序,裸题要点:裸题,直接模板一套就行15174030Seasonal2367Accepted188K0MSC++734B2016-02-18 17:08:31#include#include#includeint c[150],topo[150];int t,n;bool g[

2016-02-18 17:14:57 438

原创 例题6-15 UVa10305 Ordering Tasks(拓扑排序)

题意:看白书要点:利用dfs先将最深的赋值给数组中最后一个位置,相同深度的就随便排了,因为只输出一种,所以答案跟题目中给的可以不一样#include#include#includeint c[150],topo[150];bool g[150][150];int m, n,t;bool dfs(int u){ c[u] = -1; //

2016-02-18 10:12:05 632

原创 POJ1256 Anagram(回溯法)

#include#include #includeusing namespace std;char str[15]; //存储输入字符串char out[15]; //存储输出字符串bool b[15]; //字符是否已经使用int N; //字符个数//比较两个字符的大小int cmp(const void * a,const v

2016-02-17 21:44:16 1464

原创 POJ2243 Knight Moves(BFS)

题意:输入两组坐标,输出骑士从一个到另一个最少要几步(骑士走日字)要点:标准的BFS题,寻找最短路径,用队列做15170656Seasonal2243Accepted176K16MSC++1099B2016-02-17 17:36:15#include#include#include#includeus

2016-02-17 18:17:45 502

原创 POJ1564 Sum It Up(DFS)

题意:输入一组数,要求输出总数为t的所有组合要点:因为数最多只有12个,直接暴力搜索就可以了,还有要判断重复,就是与前一个比较,但是其实只是剪枝提升速度,4,3,2,1,2,1这种还是会输出两个4,2,1这种15167723Seasonal1564Accepted164K16MSC++709B2016-02-16 21:40:14

2016-02-16 22:24:50 412

原创 例题6-12 UVa572 Oil Deposits(DFS)

题意:就是看有几个可以搜索完的块,求连通块,有个专门的算法名:种子填充要点:标准深搜,有上下左右和斜对角的可以用二重循环来表示#include#include#includebool idx[150][150];char map[150][150];int m, n;void dfs(int x, int y){ if (!idx[x][y] || map

2016-02-16 12:03:38 328

原创 数据结构——图

一:数组表示法#include#define maxn 100#define INFINITY 0typedef struct{ int vexs[maxn]; int arcs[maxn][maxn]; int vexnum, arcnum;//vexnum为顶点数,arcnum为边数}Graph;void init(Graph &g) //需要传递g的地址使g改变

2016-02-14 11:21:51 301

原创 例题6-11 UVa297 Quadtrees(四分树)

题意:看白书要点:非二叉树,因为四分树比较特殊(有中间结点这种东西),所以给出先序遍历就可以确定整棵树(因为如果要向下必须要用中间结点,而且中间结点本身没有值),所以只要模拟一个方块的分割就行#include#include#includeconst int len = 32;const int maxn = 1024 + 10;char s[maxn];int

2016-02-12 20:13:31 1135

原创 例题6-10 UVa699 The Falling Leaves(二叉树)

题意:看白书要点:构造一个数组,从中间的下标开始,向左就-1,向右就+1,够简单的#include#include#include#define maxn 100005int sum[maxn];bool build(int p){ int v; scanf("%d", &v); if (v == -1) return false; sum[p]

2016-02-12 18:08:04 285

原创 例题6-9 UVa839 Not so Mobile(树)

题意:看白书要点:书上的代码倒是简洁,自己写是写不出这么简洁的,递归还是差点#include#includebool build(int &w) //这里传递地址改变w的值{ int w1, w2, d1, d2; bool b1 = true, b2 = true; scanf("%d%d%d%d", &w1, &d1, &w2, &d2); if (!

2016-02-09 19:29:36 598

原创 例题6-8 UVa548 Tree(树的遍历转换)

题意:分别用中序和后序输入一颗有权二叉树的权值,找出叶子满足到根权值和最小,如果一样大选自身权值最小的叶子要点:后序的最后一个结点一定是根结点,再在中序中找对应权值相同的结点的位置,这样左边就是左子树,右边是右子树,再递归一个个把分别的根结点放上去,这就是后序如何变成中序。#include#include#include#include#include#define mi

2016-02-08 21:42:16 445

原创 POJ1046 Color Me Less(水)

题意:颜色由(R,G,B)组成,先输入16组颜色制成表,再输入一些颜色,寻找与表中最接近的颜色要点:水题,简单的不得了,春节期间练练手,这几天学习效率非常低下,节日的气氛还是有些影响15147087Seasonal1046Accepted400K16MSG++618B2016-02-07 16:43:17#in

2016-02-07 19:59:15 331

原创 例题6-7 UVa122 Trees on the level(树&&队列BFS&&sscanf字符串转整数)

题意:看白书要点:这题还真难,有很多知识不说,还有很多C++的容器。结点最多256个,要考虑最差的情况就是排成一条链,这样深度是256,如果用数组会爆炸,所以用动态分配。#include#include#include#include#include#includeusing namespace std;char s[1000];bool failed;

2016-02-05 20:08:59 377

原创 例题6-6 UVs679 Dropping Balls(二叉树)

题意:看白书要点:完全就是二叉树,直接用一个数组建树。话说VJ有关UVa的挂了,递不上去#include#include#define depth 20bool tree[1 << depth]; //左移运算符,1<<n==2^nint drop(int node,int d) //一个递归函数,记录每个小球的轨迹{ if (d == 0) ret

2016-02-04 16:16:55 378

原创 POJ3264 Balanced Lineup(线段树)

题意:输入一组数和一组区间,输出每个输入的区间内最大值与最小值的差要点:涉及到区间的一般就是线段树,学习了一下,这题是最基本的线段树应用,主要问题是时间比较紧。这个博客讲的不错:点击打开链接15137463Seasonal3264Accepted1408K2250MSC++1467B2016-02-03 17:43:34

2016-02-03 19:39:55 329

原创 POJ1423 Big Number(数学)

题意:输出n!的位数要点:n!的位数=log10(n!)+1有两种方法:1.直接用log(n!)=log10(1)+log10(2)+……+log10(n)打表做,把1~1e7的先全算出来,这种可以做但比较慢2.纯数学做法,用斯特林公式算出近似值,因为是求位数,近似值够用了斯特林公式:   方法一(打表):15131753

2016-02-01 20:11:41 454

原创 数据结构——树

一:二叉树1.二叉树的建立和三种遍历#include#includetypedef struct node{ char data; struct node *left; struct node *right;}bitnode, *tree;void create_tree(tree *t)//先序递归建立树{ //因为形参

2016-02-01 14:00:56 279

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除