
算法竞赛入门经典-数据结构基础
Dave_L
这个作者很懒,什么都没留下…
展开
-
例题6-3 矩阵链乘 UVA442
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=383Suppose you have to evaluate an expression like A*B*C*D*E where A,B,C,D and E are matrices. Sincema原创 2017-10-07 07:55:39 · 427 阅读 · 0 评论 -
例题6-16 uva10129 Play on Words 欧拉回路 并查集判连通+欧拉回路的判断
题目链接:https://vjudge.net/problem/UVA-10129思路:将每个字母看作节点每个单词看成有向边,开头字母出,结尾字母进。 首先判断是否能够构成回路,若能则判断无向图是否连通,都满足则能,反之,不能。Code:#include using namespace std;int father[26];int indegree[26原创 2017-10-21 11:16:10 · 347 阅读 · 0 评论 -
例题6 - 19 uva1572 Self-Assembly 拓扑排序
原题连接:https://vjudge.net/problem/UVA-1572题意:给你N个正方形,看是否拼接成一个无限拓展的图形,每个正方形的拼接规则就是相同字母且符号相反(00不能拼接)思路:把给的正方形的边抽象成点,四个点重新组合成6条边,如果这些边构成的有向图成环,那么就是无限大平面。另(2n + 1) ^ 1 = 2n, (2n) ^ 1 = 2 n + 1。原创 2017-10-22 16:35:14 · 392 阅读 · 0 评论 -
例题6-12 UVA572 Oil Deposits 基础dfs求连通块
题目连接:https://vjudge.net/problem/UVA-572思路:基础dfsCode:(紫书版本)#include #include #include using namespace std;const int AX = 1e2+5;char mp[AX][AX];int id[AX][AX];int n , m;void dfs( int r , i原创 2017-10-14 10:42:00 · 353 阅读 · 0 评论 -
例题6-21 uva506 System Dependencies 模拟
题目链接:https://vjudge.net/problem/UVA-506Code:#include using namespace std;const int maxn = 1e5+666;mapmp;maplis;int status[maxn];std::vector depend[maxn]; std::vector depended[maxn];std::ve原创 2017-11-09 12:24:43 · 366 阅读 · 0 评论 -
习题6 -1 Parentheses Balance uva673 简单栈的应用
题目链接:https://vjudge.net/problem/UVA-673#author=0Code:#include using namespace std;int main(){ int T; cin >> T; getchar(); while( T-- ){ stacks; string line; getline(cin,line); char c原创 2017-11-09 13:00:36 · 305 阅读 · 0 评论 -
例题6-13Ancient Messages UVA1103 dfs求连通块+16进制转2进制
题目链接:https://vjudge.net/problem/UVA-1103题意:给出几种象形符号,然后给出16进制的像素描述,让你根据描述字典序输出描述中的象形符号。思路:几种象形符号可以转化成不同的连通块个数。先转换16进制为2进制,然后给图形外面加一层“边框”0,第一次dfs遍历将外面多余的0全部变成 ‘ - ’ ,然后再进行dfs遇到‘1’就找它是否包围0,包围了几个就对应相应原创 2017-10-15 10:32:32 · 353 阅读 · 0 评论 -
习题6-2 S-Trees UVA - 712 满二叉树
题目链接:https://vjudge.net/problem/UVA-712题意:根据输入的01序列判断最终会走到哪一片叶子(0左1右)(x1 x2 这些输入没用上)思路:a数组存储叶子值,mov是最初的起点1,根据输入的路径走(0就是2*mov,1就是2*mov+1,因为一个节点k的左右儿子节点分别是2*k,2*k+1),最后算出的叶子的对应值,减去上边的2的n次方个节点,就是对应的原创 2017-11-09 17:15:17 · 320 阅读 · 0 评论 -
例题6-8 二叉树的递归遍历 uva548
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=489思路:根据输入的后序遍历(最后的那个数)找到树根,然后再在给出的中序遍历中找到树根,这样就能根据后序中序遍历的数据递归构造左右子树,最后dfs求出最优解Code:#include原创 2017-10-08 16:46:37 · 452 阅读 · 0 评论 -
例题 6 - 17 Undraw the Trees UVA - 10562
原题连接:https://vjudge.net/problem/UVA-10562题意:根据给出的树画出树的结构思路:输入树之后,找哪个有根,然后深度搜索。Code:#include using namespace std;const int AX = 1e2 + 66 ;string buf[AX];int cnt ;void dfs(int r , int c ){原创 2017-10-22 09:02:14 · 379 阅读 · 0 评论 -
例题6-11 四分树
题目链接:https://vjudge.net/problem/UVA-297思路:四分数不同于二分树,可以直接按照先序遍历的方式建树。Code:#include #include using namespace std;const int AX = 1024+6;const int px = 32;char s[AX];int res;int mp[AX][AX];v原创 2017-10-12 16:40:44 · 432 阅读 · 0 评论 -
例题6-10 UVA699 二叉树先序遍历
题目链接:https://vjudge.net/problem/UVA-699思路 : 递归输入将树根设置为某一个垂直位置,然后根据先序输入先输入树根,接着对每一个节点输入子树,最后遍历sum数组即可。Code:#include #include #include using namespace std;const int AX = 1e4+666;int sum[AX];原创 2017-10-12 15:48:42 · 432 阅读 · 0 评论 -
例题6-4 UVA11988 悲剧文本
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3139思路:数组实现的链表Code:#include #include #include using namespace std;const int AX = 1e5+666;原创 2017-10-07 08:27:49 · 438 阅读 · 0 评论 -
例题6-6 UVA679 - Dropping Balls 二叉树编号
原题:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=620思路:对于一个节点k,两个子节点分别是2*k (左) 2*k+1 (右),如果直接开数组模拟会超时,由前两个小球可以知道第一个左节点,第二个右节点。那么根据编号就能够得出落在哪个节点,奇数的原创 2017-10-08 08:28:32 · 422 阅读 · 0 评论 -
例题6-5 UVA12657 双向链表模拟
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4395You have n boxes in a line on the table numbered 1...n from left to right. Your task is to si原创 2017-10-07 10:15:57 · 508 阅读 · 0 评论 -
例题6-7 树的层次遍历 BFS遍历
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=&problem=58&mosmsg=Submission+received+with+ID+20135244思路:根据输入的点建树,如果有重复赋值的则输出not complete ,然后就是原创 2017-10-08 11:27:30 · 1274 阅读 · 0 评论 -
例题6-14 Abbott's Revenge Uva816
题目连接:https://vjudge.net/problem/UVA-816题意:有一个 9 * 9 的交叉点的迷宫。 输入起点, 离开起点时的朝向和终点, 求最短路(多解时任意一个输出即可)。进入一个交叉点的方向(用NEWS表示不同方向)不同时, 允许出去的方向也不相同。 例如:1 2 WLF NR ER * 表示如果 进去时朝W(左), 可以 左转(L)或直行(F), 如果 朝N只能右转原创 2017-10-19 17:08:02 · 400 阅读 · 0 评论 -
例题6-1 双端队列 uva210
Concurrency Simulator Programs executed concurrently on a uniprocessor system appear to be executed at the same time, but in reality the single CPU alternates between the programs, execu原创 2017-10-06 11:45:37 · 762 阅读 · 0 评论 -
例题 6-2 Rails Uva514(此处是poj1363的代码)
#include #include #include #include using namespace std;const int AX = 1e3+66;int a[AX];int main(){ int n; while( scanf("%d",&n) && n ){ while( scanf("%d",&a[1]) ){ if( a[1] == 0 ) { cou原创 2017-10-06 11:47:36 · 408 阅读 · 0 评论 -
例题6-15 拓扑排序 DFS实现和STL实现 uva10305
题目链接:https://vjudge.net/problem/UVA-10305题意:给出n,m 输入m行(u,v) u 任务需要在v任务前做完,求相应顺序。思路:拓扑排序。mark标记每个点的状态 -1 表示被访问,0 未被访问, 1 表示已经dfs过了。如果当前状态是-1且再次被访问,那么就说明存在有向环。Code:#include #include #include原创 2017-10-21 09:22:46 · 370 阅读 · 0 评论 -
例题6-9UVA839 - Not so Mobile 递归访问二叉树
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=780思路:递归访问二叉树Code:#include #include using namespace std;bool solve(int &w){ int w1,d1,w2原创 2017-10-10 15:20:19 · 383 阅读 · 0 评论