第六章 数据结构基础(习题)
aozil_yang
这个作者很懒,什么都没留下…
展开
-
习题6-9 UVA 127 纸牌游戏
一道学校OJ做的题目,当时卡了两三天。简单说下题意:52叠扑克,从左到右发现一个牌与他的前面3张或者1张 花色或者点数相同时,就把这张牌放到那上面,参与比较的只能是每一叠的第一章!思路:我建立了vector 套了一个stack stack里面放了struct,先输入。1.在输入方面,最好写个输入函数,真的很方便,在输入方面类似于紫书的例题6-7 UVA 122,写个输入函数原创 2016-02-13 16:49:46 · 414 阅读 · 0 评论 -
习题 6-4 UVA 439 Knight Moves 骑士的移动
题意很简单:问一个马从起点走到终点最短步数。思路:简单的bfs,输入得到起点终点,直接用队列走就可以了!#include#includeusing namespace std;int sx,sy,gx,gy;const int INF = 1e8;int idx[10][10];const int dx[] = {-1,-2,-2,-1,1,2,2,1};const原创 2016-02-20 13:26:41 · 484 阅读 · 0 评论 -
习题 6-5 UVA 1600 Patrol Robot 巡逻的机器人
和普通的bfs基本一样,只不过多了一个可以穿越的障碍的条件!思路:建立一个三维数组vis表示是否访问过,第三维表示穿越的障碍数量。结构体中包括坐标,步数,障碍数。教训:之前错一次,因为开成了二维数组,但仔细想想的话,开二维数组表示是否访问,可能会被其他同样的条件给覆盖掉!代码如下:#include#include#include#includeusing原创 2016-02-27 15:58:57 · 558 阅读 · 0 评论 -
习题6-2 UVA 712 S-Trees S树
看了紫书翻译后,感觉很简单,但不解有些条件!尝试做做,果然是一道水题,条件很多没用的!首先给你的X1,X2,X3是没用的,直接根据深度,求出最后一层的编号! 第一个2 ^ n;而且 n <=7随便怎么做就可以了!直接对查询进行处理0向左拐,1右拐!最后放到字符串里输出即可!#includeusing namespace std;const int maxn = 10原创 2016-03-05 19:08:22 · 371 阅读 · 0 评论 -
习题6-3 UVA 536 Tree Recovery 二叉树重建
这个题类似于例题6-8给你先序遍历,中序遍历,求后序遍历,直接模仿例题6-8写就行了写个build函数。先序遍历第一个字符就是根,然后再中序遍历中找到根,不断的递归,递归完成输出即可!先build 左,在build 右,这样就默认成了后序遍历 输出即可!代码如下:#include#includeconst int maxn = 30;char s1[maxn],s原创 2016-02-20 20:30:40 · 482 阅读 · 0 评论 -
UVA 12166 Equilibrium Mobile 修改天平
思路:根据每个结点的深度和数值就可算出整个天平的总质量(假设的平衡的情况)算出后,记录结果出现次数最多的个数MAX,在让总节点个数减去MAX即可!深度计算方法:遇到[ 深度++,遇到] 深度--即可!注意:数组尽量开大点,RE了好几次!#includeusing namespace std;const int maxn = 1000000 + 10;char原创 2016-03-10 23:19:34 · 387 阅读 · 0 评论 -
习题 6-14 UVA - 12118 Inspector's Dilemma 检察员的难题 (DFS 构造欧拉通路)
期末考试也快结束了,抽个空补个题做做 = =!!大体题意:给你一个无向图,任意两个顶点都是双连通的,给你e个 必须走的边,和每个边的权值t,问最少多少权值恰好完全经过这e个必须走的边。思路:最短恰好完全走过,那不就是一笔画吗,不就是欧拉通路吗,并且任意两个点都是双连通,肯定能构造出欧拉通路来。先用vector数组 在建立这张无向图,然后计算出度数是奇数的顶点个数ans,答原创 2016-07-01 00:31:39 · 463 阅读 · 0 评论