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