数据结构-线性表
LYoGa
这个作者很懒,什么都没留下…
展开
-
UVA442
#include #include struct Matrix{ char name; int r,l;};//建立结构体struct Matrix a[30], b[30];char str[1000] = {'\0'};int n, i, t, top, sum, len;bool flag;void judge(){ if(!top) return ;//to原创 2013-07-12 19:56:11 · 573 阅读 · 0 评论 -
FZU1894
题意:队列问题,C为入队列,Q为输出队列中RP的最大值,G为删除队列头的元素思路:看了别人的思路,用数组模拟单调队列#include #include #define MAXN 1000100typedef struct { int value; int num;}QUEUE;QUEUE queue[MAXN];int main() { int T原创 2013-12-05 20:24:32 · 732 阅读 · 0 评论 -
UVA10050- Hartals
题意:分别给出各个党派party的时间,算出扣除这些,剩余的工作时间,星期五,星期六除外。思路:题目理解之后就不是很难了,主要是要处理星期五和星期六的情况#include#includeint main() { int cas; int arr[105], vis[3700]; scanf("%d", &cas); while (cas--) { int n, p, cn原创 2013-08-18 21:05:03 · 823 阅读 · 0 评论 -
UVA11111- Generalized Matrioshkas
题意:嵌套娃娃,在里层的娃娃的尺寸要小于外层的娃娃,有可能一个娃娃里面有多个娃娃,而这多个娃娃尺寸和要小于外层的,相当与匹配括号的加强版,有些但疼。思路:要多容量大小是否足够的判断,小看了别人的一些思路,自己写了代码。下面的核心代码是deal函数,用的是错位的方法(个人觉得),同一top的sum[top]与 stack[top],其实是sum[to原创 2013-08-18 15:11:40 · 787 阅读 · 0 评论 -
UVA673- Parentheses Balance
题意:匹配括号思路:利用STL中的stack做的,记住空字符串也是Yes。#include#include#include#include#includeusing namespace std;int main() { int n; char s[150]; scanf("%d", &n); getchar(); while (n--) { stack st原创 2013-08-17 20:15:41 · 663 阅读 · 0 评论 -
UVA10152- ShellSort
题意:给n只乌龟按所给的顺序排序,要求移动乌龟的数量最少。思路:要使移动的步骤最少,就要保证相对顺序相比较于目标顺序的不要进行移动(即最大的公共子序列不要移动)。这样的话,可以分别为两个序列设一个指示器,从尾部开始 碰到两个序列都一样的就都减掉1,如果不相同的就相对顺序的减掉1,目标顺序的不变,最后将剩余的目标顺序的按逆序输出。#include#include原创 2013-08-17 20:12:30 · 699 阅读 · 0 评论 -
UVA133- The Dole Queue
/*思路:题目有点类似变形的约瑟夫环,不过感觉用链表做有些麻烦,所以用数组模拟 刚开始每什么思路,后来在网上看到了一个很好的思路,就理解了一下,自己敲代码。 是这样的,我们可以理解为在桌上有一堆扑克牌数量为n,按顺序放好,然后从左数k张,拿掉,同时从右数m张,拿掉。当从左数到尽头时, 要再从最左边有牌的开始往右数,从右数的同左边数的方法一样。当桌上的牌拿光是结束原创 2013-08-17 17:14:25 · 846 阅读 · 0 评论 -
UVA101- 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以及a以上的木块整体移动到b上面;4,pile a over b:将a以及a以上的原创 2013-08-19 20:15:20 · 699 阅读 · 0 评论 -
UVA11234- Expressions
题意:题目给你一种后缀操作表达式,x,y +的形式,然后要求我们转换成queue的方式思路:其实刚开始看到这个,很蒙。。没有什么思绪。。。想了很久,就去看了别人的思路。 小写其实是代表数字,大写字母代表操作符。当遇到小写就将其当作无子树的节点压入栈中,遇到大写字母就将栈顶前两个节点取出,作为遇到的这个大写字母的左右子 树。然后在栈中删除取出的两个节点,将新的节点压入原创 2013-08-19 11:02:55 · 835 阅读 · 0 评论 -
1443. Printer Queue
题意:输入一组数据,每个元素都有优先级,优先级从1到9.计算出当目标任务完成后,所需要的时间思路:如果第一个元素的优先级不是最高,就将这个元素放到队列末,如果其优先级最高,但不是目标任务的话,就将其删掉,时间就+1,如果是目标任务的话,就输出时间#include#include#include#includeusing namespace std;struct job{原创 2013-07-18 16:59:50 · 785 阅读 · 0 评论 -
HDU5033-Building(维护单调栈)
题目链接题意:给出n座大楼的位置以及高度,再给出m个人的位置,查询给出的人的位置所能看到的最大的仰角是多少。思路:维护每两座的楼之间的斜率,使之成为一个凸面,用栈来维护,听了GG小伙伴的思路,可以将人当作高度为0的大楼来带入计算。代码:#include #include #include #include #include using names原创 2014-09-23 14:29:42 · 1404 阅读 · 0 评论