数据结构
文章平均质量分 65
GooMaple
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
UVa 101 - The Blocks Problem
模拟栈,这个题并不难,注意a、b积木相同时情况的处理就可以,但至今都不明白当时为什么RE了那么多遍,数组cn开小了就RE,但按题目说最多开个cn[25][25]的数组就足够了,但我开到100多还是RE,结果一下开到200多就AC了,至今不知道是为什么,求大神解释啊~~~ #include #include #include using namespace std; struct blocks原创 2012-07-30 16:40:32 · 604 阅读 · 0 评论 -
UVa 10152 - ShellSort
栈题,乌龟只能从堆中爬出来到最顶端,而不能爬到其他位置插进去。其次注意对应关系,但凡其第一次名字的序号比目标序列名字所在序号大的都需要输出,输出顺序为目标序列中需要输出名字的逆序。 代码如下: #include #include #include #include #include using namespace std; int main() { #ifdef test原创 2012-07-30 16:44:18 · 675 阅读 · 0 评论 -
UVa 540 - Team Queue
此题坑死我了,刚开始理解错题意了,卡了两天,连WA带RE了十几遍,最坑爹的是,从网上找的所有测试数据竟然全都过了,但始终不对,最终问了一高手,给了一数据,没过,具体问了问,结果是理解错题意了,思路全部错了,根据题意从新整理思路写下来,终于AC了~~~~ 大体题意就是,让你排一个长队,ENQUEUE -X 就是往队列里加一个元素,如果这个元素跟队列里的某个元素在上边给出的team里是在相同的t原创 2012-07-31 09:35:39 · 984 阅读 · 1 评论 -
UVa 442 - Matrix Chain Multiplication
栈题,将数据一个一个往栈里面放,直到遇到第一个‘)’ ,从‘)’元素往前找,直到第一次遇到‘(’为止,把中间出现的矩阵乘法次数算出来,然后把乘积得到的矩阵放到与‘)’对应的‘(’位置,将其覆盖,直到元素全部放完为止。 代码如下: #include #include #include #include #include #include using namespace std; in原创 2012-07-31 09:39:03 · 942 阅读 · 0 评论 -
UVa 699 - The Falling Leaves
实质上是一个二叉树的DFS,先左子树,再右子树,因为题目说最大宽度为80,所以开一个80的数组,从中间(40)开始,往里递归。 以第二组数据为例, 8 2 9 -1 -1 6 5 -1 -1 12 -1-1 3 7 -1 -1 -1 开始a[40]=8,其左子树 2 (a[39]=2),右子树 3 (a[41]=3); 2的左子树为 9 (a[38]=9),右子树为6,则其右子原创 2012-07-31 09:59:05 · 1117 阅读 · 0 评论 -
UVa 327 - Evaluating Simple C Expressions
按理说应该是一个二叉树的题,许久以前用数组做的 ~ 代码如下: #include #include char m[33][33]; int main() { #ifdef wct freopen("sample.txt","r",stdin); #endif char m[150],a[150],b[30],flag[100]; int value,i,j,原创 2012-07-31 10:00:12 · 1241 阅读 · 0 评论 -
UVa 839 - Not so Mobile
只要节点处的质量不为 0 ,其就有子树,递归走完全部输入 ~ 代码如下: 只要节点处的质量不为 0 ,起就有子树,递归走完全部输入 ~ 代码如下: #include #include #include #include int flag; int judge() { int wl,dl,wr,dr; scanf("%d%d%d%d",&wl,&dl,&wr,&dr)原创 2012-08-01 13:48:26 · 682 阅读 · 0 评论 -
UVa 10562 - Undraw the Trees
比较坑爹的一个题,节点不一定为字母,而且可能为空节点(需输出“()”),除去这两个地方比较恶心,个人感觉这还是比较好的一个树的递归题。 代码如下: #include #include #include #include char a[200+2][200+2]; int cct; void dfs(int x, int y) { int i, j, k; for(i = y原创 2012-08-01 13:55:18 · 1415 阅读 · 0 评论 -
UVa 127 - "Accordian" Patience
模拟栈,题目本身不难,但条件较多必须认真读题,因为错误理解了"每次都从最左边的纸牌开始操作"而被样例卡了两天,最后又读了两遍题才明白过来,这种水题......哎,唯一值得安慰的是改完后,一遍AC了...水平还是有待提高啊~ 代码如下: #include #include #include #include #include using namespace std; struct game原创 2012-07-30 16:45:34 · 1824 阅读 · 1 评论 -
UVa 112 - Tree Summing
第一次做二叉树的题,参考了某大神的代码,充分领略到大神递归的境界,光研究他的代码就花了好几个小时,还看了cin.ignore(),cin.clear(),cin.fail()以及cin.sync()几个cin流的实质和妙用,完全连指针链表都没用只用递归就把此题给A掉了,受益不少啊~~~ 代码如下: #include #include #include #include #i原创 2012-07-31 09:43:18 · 1265 阅读 · 1 评论 -
Uva 297 - Quadtrees
抱着打死也不用链表的精神,我把这个题给写出来了(其实也蛮后悔的,感觉不用链表也不是很简洁)。 我的思路基本分两步,第一步先将两个字符串合成一个,这一步我的处理是非常麻烦的(本来预计没有这么麻烦的),分九种小的情况,其中有两种还需要进行特殊的递归处理;第二步相对比较简单,将合成的字符串用个递归函数模拟四叉树便可搞定 ~ #include #include #include #incl原创 2012-07-31 10:02:24 · 886 阅读 · 0 评论 -
UVa 11111 - Generalized Matrioshkas
这个题算是比较抽象的, 相当于“括号平衡”那个题的加强版,首先要用栈判断正负数字平衡,其次在判断每个(括号)里的直接套的那层正数(或是负数之和的绝对值)小于最外层数字 ~ 代码如下: #include #include #include #include int stack[10000],sum[10000]; // 需要用到两个数组,一个存括号内直接数字之和,另一个为数字栈 int Nu原创 2012-08-01 13:54:34 · 1889 阅读 · 1 评论 -
UVa 548 - Tree
这个题本来是看到书上有一个从前序遍历和中序遍历推后续遍历数列的一段代码,在此基础上改的,不过说实话还是蛮坑爹的,虽然最后写完AC代码比较短跑的时间也很短,但实际过程非常曲折,这可能与开始借鉴刘汝佳书上的那段代码有关系(大思路不合适),基本上是写一点调一点最后还WA了一次才改成功的 ~~ 基本思路是用后序遍历和中序遍历模拟前序遍历过程然后算和,当然其中很多地方需要特殊标记和处理 ~~ 总原创 2012-08-01 13:45:03 · 1552 阅读 · 0 评论 -
UVa 712 - S-Trees
这个题真的丢人了,WA了三遍,死活没检查出错来,让别人瞄了那么一眼,就看出来是" S-Tree #1: ”出了问题,应该是依次为1,2,3...,结果当时写的时候想当然的就把“S-Tree #1:”直接粘过去了,也没设个数据进行++操作,哎哎,直接掉价了~~ 其他的倒没什么,题本身很简单,但是理解起来果断有难度,理解了之后开几个数组再用类似二分的方法做就可以了。 题意:就是给你一排盒子原创 2012-08-01 13:46:57 · 1326 阅读 · 0 评论 -
UVa 11234 - Expressions
虽然在List分类里,但实质是一个二叉树的题,抱着不用链表只用递归的目标,RE了三次,究其原因数组开小了,最后改到a[5000][8000]终于AC了,但却跑了个2.6秒, 差点没过,后来估计了一下数据范围,优化了一下,改成a[5000][1500]后,跑了个0.5几秒,总算是差不多了。 题目中stack实质上是个二叉树的前缀遍历(本身的序列是前缀遍历的逆序,操作时需要将其反过来),而queu原创 2012-08-02 11:02:35 · 1022 阅读 · 0 评论
分享