
初级DS
文章平均质量分 56
小白菜又菜
这个作者很懒,什么都没留下…
展开
-
Leetcode 700. Search in a Binary Search Tree
【代码】Leetcode 700. Search in a Binary Search Tree。原创 2024-09-01 11:32:18 · 347 阅读 · 0 评论 -
Leetcode 295. Find Median from Data Stream
【代码】Leetcode 295. Find Median from Data Stream。原创 2024-08-22 20:43:52 · 378 阅读 · 0 评论 -
Leetcode 225. Implement Stack using Queues
【代码】Leetcode 225. Implement Stack using Queues。原创 2024-05-01 20:01:28 · 642 阅读 · 0 评论 -
Leetcode 173. Binary Search Tree Iterator
【代码】Leetcode 173. Binary Search Tree Iterator。原创 2023-02-25 23:52:55 · 161 阅读 · 0 评论 -
Leetcode 199. Binary Tree Right Side View
【代码】Leetcode 199. Binary Tree Right Side View。原创 2022-12-25 17:44:06 · 228 阅读 · 0 评论 -
UVa 11234 - Expressions
題目:已知一個計算表達式的棧的表述形式,輸出對應的隊列的表達形式。分析:數據結構。 如上圖所示,是數據而的表達式樹。 對應的棧表達形式,用類似樹的後根序輸出可以表示為:輸出右子樹;輸出左子樹;輸出根;(dfs) 對應的隊列表達形式,為從下到上,從左到有的表示;(bfs)原创 2016-03-10 17:41:23 · 684 阅读 · 0 评论 -
UVa 11111 - Generalized Matrioshkas
題目:俄羅斯套娃,判斷序列的合法性。分析:數據結構,棧。利用棧處理數據,設置一個變量存儲當前層的總值,判斷是否裝得下。說明:注意結束時判斷隊列是否為空。#include #include int value[10001];int stack[10001];int total[10001];int main(){ char ch; while (~scanf("%d%原创 2016-03-16 18:55:36 · 594 阅读 · 0 评论 -
UVa 1210 - Sum of Consecutive Prime Numbers
題目:計算連續素數的結合為n的組合有多少種。分析:數論,數據結構。先打好素數表,然後順序掃描即可,類似維護一個隊列。說明:╮(╯▽╰)╭。#include #include int visit[10010];int prime[10010];int main(){ memset(visit, 0, sizeof(visit)); int count = 0; for原创 2016-01-09 11:57:25 · 2196 阅读 · 0 评论 -
UVa 10646 - What is the Card?
題目:有52張倒扣的牌,從上面取2張放在手裡,然後執行三次如下操作: ①取最上面的牌的牌面值X(2~9外的均為10); ②加到Y上(初始為0); ③扔掉最上面的牌,再扔掉上面的10-X張牌; 然後在把手上的牌放回到牌堆的上面,問從下向上數的第Y張牌是什麼。分析:模擬,數據結構。利用棧模擬即可原创 2015-11-02 11:31:03 · 689 阅读 · 0 评论 -
UVa 10986 - Sending email
題目:發送郵件,求最短路徑。分析:圖論,最短路。直接利用dijkstra算法+優先隊列優化。說明:spfa+stack超時了╮(╯▽╰)╭。#include #include #include #include using namespace std;//banery_heapint heap_keys[20002];int heap_base[20002];int原创 2015-09-14 09:53:54 · 1118 阅读 · 0 评论 -
UVa 540 - Team Queue
題目:多級隊列;排隊打飯,如果當一個隊伍裡面有自己團隊的人,就可以插隊到團隊後面;求出隊序列。分析:數據結構。自己實現多級隊列的數據結構。利用鏈錶實現多級隊列的數據機構。 定義兩種結構:1鏈錶頭節點,2鏈錶內節點; 相同團隊,用一個鏈錶維護,為了方便查找,使用hash; 鏈錶頭結點:數據原创 2016-03-12 12:46:55 · 736 阅读 · 1 评论 -
UVa 10562 - Undraw the Trees
題目:輸入字符串形式的樹,輸出對應的樹的描述,用括號表示一顆子樹。分析:搜索。在每行利用‘-’查找到每個ASC字符(除去‘ ’,‘#’,‘-’,‘|’),然後遞歸處理即可。說明:空字符可能會導致錯誤,╮(╯▽╰)╭。#include #include #include #include #include using namespace std;char buf[222]原创 2016-03-12 19:10:28 · 1052 阅读 · 0 评论 -
UVa 12356 - Army Buddies
題目:有一排士兵,每次有一排子彈掃過(區間),輸出每次子彈掃過后兩端最近的人。分析:DS,雙向鏈錶。每次更新雙向鏈錶節點兩端的指針即可,定位時使用ID。說明:如果每次子彈的區間有交集,則此種方法會WA,需要用區間樹實現。#include #include #include #include #include using namespace std;int visit[1原创 2016-06-14 09:27:43 · 906 阅读 · 0 评论 -
UVa 11062 - Andy's Second Dictionary
題目:統計一個文本中的單詞,在每行結尾處的連詞符'-'代表一個單一被切割開, 字典序輸出所有單詞的小寫形式。分析:數據結構(DS),字典樹。檢查沒行結束的時候是不是'-',如果是就和下一行的一起處理。說明:基本上用的是UVa10815的代碼。注意單詞中(非行末)的'-'。#include #include #include #include usin原创 2016-12-14 18:31:50 · 417 阅读 · 0 评论 -
UVa 12100 - Printer Queue
題目:有一個打印機,裡面有很多任務。打印的時候,如果隊列中後面的文件優先級高, 則先打印優先級最高的文件,前面的任務依次放入隊尾,問第每m個文件何時打印。 (所有文件打印都只需要1個單位時間,其它動作不耗時)分析:數據結構、模擬。直接利用一個隊列模擬即可。說明:第911題,O(∩_∩)O~。#include #include in原创 2017-05-24 20:30:03 · 1091 阅读 · 0 评论 -
UVa 271 - Simply Syntax
题目:已知句子的构成原则和基础元素集合,判断句子是否符合语法。分析:搜索,数据结构,找规律。最开始使用递归写语法树判断TLE了。 dfs超时,考虑使用剪枝: 1.去掉所有的N,根据题意N可以忽略,注意结尾如果是N则是非法的句子; 2.将其他大写字母合并,发现这是一个构造二叉树的过程(所以要去掉N);原创 2017-08-22 13:27:47 · 715 阅读 · 0 评论 -
UVa 732 - Anagrams by Stack
题目:已知两个单词,利用一个栈,将第一个单词变成第二个单词,求出所有可能的操作序列。分析:模拟,搜索,数据结构。利用dfs搜索求解。 利用四个串以及对应的下标记录搜索状态:当前输入,当前栈,当前输出,目标输出; 搜索时只有两种可能:input到stack,stack到output,为了回溯生成对应的逆操作;说明:注意数据中有空行。#i原创 2017-09-17 10:19:42 · 1102 阅读 · 0 评论 -
UVa 12347 - Binary Search Tree
题目已知一颗BST的前根序序列,输出它的后根续序列。分析数据结构。按照输入的顺序建立BST,并使用递归输出即可。说明开始把output函数的返回值写成int,然后已知RE,编译器优化问题?#include <cstdlib>#include <cstdio>const int data_size = 10001; //bst__bgein...原创 2018-09-23 13:55:12 · 627 阅读 · 0 评论 -
UVa 170 - Clock Patience
题目:Clock Patience游戏,将52张扑克牌,按时钟依次分成13组(中心一组),每组4张全都背面向上, 从中间组最上面一张牌开始,翻过来设为当前值,然后取当前值对应组中最上面的背过去的牌翻过来, 取这个值为新的当前值,直到不能翻拍游戏结束;求结束时,翻过来的拍数以及最后翻过来的牌; 如果没看明白题目具体规则,百原创 2015-07-20 15:49:33 · 1806 阅读 · 0 评论 -
UVa 144 - Student Grants
題目:有n個學生排隊取錢,取款機每次給的錢數是一個遞增序列,從1開始到k后又從1開始; 如果學生取夠40元就離開,否則回到隊尾,如果給的錢加上學生手中的錢多餘40, 剩下的錢給下一個人,請你輸出離開的序列編號。分析:數據結構(DS),模擬。利用隊列模擬即可,注意如果剩下的錢沒被取走,就不會出新的錢。說明:又是好長時間沒刷題╮(╯▽╰)╭。原创 2015-07-08 18:21:32 · 1318 阅读 · 0 评论 -
UVa 514 - Rails
题目:利用一个栈的序列构造分析:简单题、栈。注意:输出空行。#include #include #include #include using namespace std;int d[ 1005 ];int u[ 1005 ];int main(){ int n; while ( cin >> n && n ) { while ( cin >> d[原创 2012-11-14 13:30:06 · 4524 阅读 · 3 评论 -
UVa 673 - Parentheses Balance
题目:括号匹配的合法判断。分析:简单题、栈。注意:输出空行。#include #include #include #include #include using namespace std;string str;int main(){ int n; while ( cin >> n ) { getchar(); while ( n -- ) {原创 2012-11-14 13:33:28 · 754 阅读 · 0 评论 -
UVa 336 - A Node Too Far
题目:统计从某一点出发,走k步走不到的节点个数。分析:最短路、bfs、队列。利用bfs扩展的节点就是按照步长的递增序扩展。注意:数组开大会TLE、开小会RE。#include #include #include typedef struct lnode{ int point; lnode *next;}lnode;lnode Node[ 10000 ];ln原创 2012-11-20 02:36:18 · 1354 阅读 · 8 评论 -
UVa 127 - "Accordian" Patience
题目:52张扑克,从左到右在平面上排列,按着如下规则处理: 1.按照从左到右的顺序,如果一张牌和左边的第一张或者第三张匹配,就把它放到对应的牌上面。 2.如果可以移动到多个位置,移动到最左端的牌上面。(匹配:花色或者数值相同)分析:数据结构、栈、模拟。对于每叠牌建立一个栈,进行模拟即可。注意:每次只移动每叠牌的最顶上的牌。原创 2013-10-11 20:16:06 · 2242 阅读 · 2 评论 -
UVa 101 - The Blocks Problem
题目:给你n个方块,有四种操作: 1.move a onto b,把a和b上面的方块都放回原来位置,然后把a放到b上面; 2.move a over b,把a上面的放回原处,然后把a放在b所在的方块堆的上面; 3.pile a onto b,把b上面的放回原来位置,然后把a所在的堆整体放到b上面;原创 2013-10-16 02:15:42 · 11635 阅读 · 7 评论 -
UVa 10063 - Knuth's Permutation
题目:克努斯序列,生成排列组合的方法。原创 2014-04-27 16:45:05 · 1523 阅读 · 0 评论 -
UVa 112 - Tree Summing
题目:给你一个数和一棵树,问时钟是否存在根到叶子的路径使得路径上的数字和与已知数相等。分析:递归、栈。因为除了最外边的树外,其他都有两颗子树,直接递归求解即可。 如果存在一棵子树成立,即返回成立。注意空叶子为空不是0,它的上级加点返回结果。说明:注意数据中可能有负数。(POJ1145)#include #include #include using n原创 2014-06-24 09:40:01 · 3213 阅读 · 0 评论 -
UVa 120 - Stacks of Flapjacks
题目:烙煎饼,给你一个数字串,fu原创 2014-07-01 10:07:53 · 1391 阅读 · 0 评论 -
zoj 1095 - Humble Numbers
题目:找到用2,3,5,7为数的因第n个数字。分析:dp,数据结构。类似于合并果子的队列维护,用4根指针分别指向队列,用当前的数乘以对应数字即可。说明:(2011-09-19 01:42)#include using namespace std;int F[ 5845 ];int n[ 4 ] = {2,3,5,7};int p[ 4 ];int main(){原创 2014-09-21 22:04:25 · 879 阅读 · 0 评论 -
UVa 637 - Booklet Printing
题目:模拟输出n页书的装订打印状态。分析:模拟。页数为(n+3)/ 4,只有n不超过半篇时会输出半篇。说明:好多以前做过的题目(⊙_⊙)。#include #include #include int book[30][4];int main(){ int n; while (~scanf("%d",&n) && n) { int page = (n+3)/4;原创 2014-10-14 23:12:11 · 1623 阅读 · 0 评论 -
UVa 699 - The Falling Leaves
题目:给你一棵二叉树,每个节点上有一些叶子,每个节点的左右子树的根节点分别在左右相邻位置; 现在所有叶子都垂直落下,问每一堆各有多少叶子。分析:数据结构,递推。树的遍历。 首先,利用一个数组记录每堆的数量,从500位置开始作为根的位置; 然后,用树的先根序遍历读取数据统计,记录左右边界,查询输出即可。说明:(⊙_原创 2014-12-15 09:10:35 · 1172 阅读 · 0 评论 -
UVa 11234 - Expressions
题目:给你一个后缀表达式,展开成二叉树,然后从深层向根的方向输出树上的字符。分析:DS,递归,搜索。利用递归建树,然后bfs,逆序输出即可。说明:目标550题!#include #include #include #include #include #include using namespace std;char Str[10001];typedef struc原创 2015-01-22 15:57:52 · 930 阅读 · 0 评论 -
UVa 10077 - The Stern-Brocot Number System
题目:给你一颗分数组成的二叉树,初始值是1/1,两边的边界分别是0/1与1/0,然后递归建立子树节点, 每个子树的节点值为两边的边界值得分子之和比上分母之和,新的值也加入边界值。分析:递归,数据结构。看到上面的描述就可以做了吧,直接递归。 tree(L, R, key) { if(add(L+R)=原创 2015-03-25 17:17:41 · 2292 阅读 · 0 评论 -
UVa 122 - Trees on the level
题目:给你一颗二叉树上面的若干节点上的值(均为正数),判断从根到所有的给定的点的路径上的节点, 是不是都有值,且只被赋值一次。分析:递归,搜索,树。 首先,利用递归建树,过程中记录是否有节点赋值两次; 然后,利用递归判断,查找是否有未被赋值的节点; 最后,利用bfs安深度输出每层的值。说原创 2015-03-25 23:09:55 · 3800 阅读 · 3 评论 -
UVa 141 - The Spot Game
题目:给你一个n*n的表格,两个人轮流进行操作,每次在一个位置放上或者拿下一个棋子; 如果某一状态,之前出现过,则对方获胜,问谁获胜,如果没人获胜,输出Draw。分析:DS,数据结构,hash函数,状态压缩。 将每一行存到一个位中,用一个一维数组表示一个状态,然后利用hash表存储查找即可。说明:注意旋转后的状态认为是相同的。#inc原创 2015-03-11 21:40:48 · 1773 阅读 · 0 评论 -
UVa 548 - Tree
题目:给你一棵树的中根序和后根序遍历,求从根到叶子组成的路径中数字和最小的那条。分析:DS,树,递归。直接递归求解,用全局变量更新即可。说明:如果路径上的和相同,输出叶子值最小的那个。#include #include #include #include #include #include using namespace std;int P[10001];int I原创 2015-03-18 14:15:15 · 1796 阅读 · 0 评论 -
UVa 10935 - Throwing cards away I
题目:给n张牌放成一叠,从上到下编号从1~n,当至少还有两张牌时,丢弃最上面的牌,第二张牌放到最下面, 重复这个过程直到只剩下一张牌,输出丢弃牌的序列以及最后剩下的牌。分析:模拟、初级DS。直接利用队列模拟即可。说明:注意输出格式,一张牌没有丢掉的牌╮(╯▽╰)╭。#include #include #include #include #include原创 2015-04-20 23:25:25 · 3575 阅读 · 0 评论 -
UVa 727 - Equation
题目:求表达式的后缀式。分析:递归、栈。利用递归或栈求解即可。本人采用递归求解,每次找到运算优先级最低的点,然后递归两端即可。寻找优先级最低的点利用线段树优化。注意:数据读入出错会RE;如果数据过大递归会暴栈。#include #include #include #include #include using namespace std;char str[ 51原创 2012-11-14 13:39:09 · 1216 阅读 · 2 评论