UVA 11111-Generalized Matrioshkas(栈)】的更多相关文章

嵌套玩具, 要求外层玩具的尺寸比内层玩具尺寸的和要大. 每一个玩具由一个负数与相应的正数表示, 在这两数之间的部分即为此玩具内部的玩具. 要求判断一串输出的数字是否能组成一个合法的玩具. 一个合法的玩具: 1. 数字代表了 toy 的尺寸大小. 2. 外层的 size 必须 > 内层 size 的和, 不能是 >=. 3. 每次必须是负正对一起出现.   思路: 用一个结构体代表玩具,成员变量为容量和内部和(即嵌套在内部的元素和) 负数: 如果压栈元素大于外层容量,失败 计算外层的内部和,如果…
Description   Problem B - Generalized Matrioshkas   Problem B - Generalized Matrioshkas  Vladimir worked for years making matrioshkas, those nesting dolls that certainly represent truly Russian craft. A matrioshka is a doll that may be opened in two…
题意:有很多层盒子,盒子里面再套盒子,一个盒子可能套多个独立的子盒子,但子盒子的总体积必须小于该盒子,否则不合法,输入给一行数,负数代表左边,正数代表右边,大小表示其体积,如-2,-1,1,2则表示体积为2的盒子里套一个体积为1的盒子,再比如-5,-2,2,-1,1,5表示体积为5的盒子套两个盒子分别为2和1,题目要求判断给出的一行数是否合法.一定要保证子盒子的体积小于大盒子.比如-5,-4,4,-2,2,5就不合法. 解析:栈的使用,但同时维护另一个值,该盒子剩余能容纳的体积,比如该盒子的体积…
 Rails  There is a famous railway station in PopPush City. Country there is incredibly hilly. The station was built in last century. Unfortunately, funds were extremely limited that time. It was possible to establish only a surface track. Moreover, i…
题意描述: 给出一段只包含()和[]的字符串,判断是否合法,合法输出YES,不合法输出NO 规则: 1.该串为空,则合法 2.若A合法,B合法,则AB合法 3.若A合法,则(A)和[A]均合法 解题思路: 括号匹配问题,使用栈来解决,需要注意的是用gets来读取,当该串为空时,输出YES 代码实现: #include<stdio.h> #include<string.h> int f(char a[],int l); int main() { ]; int T; scanf(&qu…
题目链接: https://cn.vjudge.net/problem/UVA-514 /* 问题 输入猜测出栈顺序,如果可能输出Yes,否则输出No 解题思路 貌似没有直接可以判定的方法,紫书上给出的方法是在进行一个入栈出栈操作,看是否能够构成原始的入栈序列. */ #include<cstdio> #include<stack> using namespace std; int ok(int a[],int n); int main() { freopen("E:\\…
参考:https://blog.csdn.net/ZscDst/article/details/80266639 #include <iostream> #include <cstdio> #include <cstring> #include <stack> using namespace std; ; int main() { int n; int d[N]; // freopen("btext.txt","r",…
题意:给一个整数序列,输出每次反转的位置,输出0代表排序完成.给一个序列1 2 3 4 5,这5就是栈底,1是顶,底到顶的位置是从1~5,每次反转是指从左数第i个位置,将其及其左边所有的数字都反转,假如反转位置2,则1 2 3 4 5就变成 4 3 2 1 5. 问怎样经过最少次数的反转能得到升序12345. 思路:每次产生一个最大的数字到右边,经过n次就升序了.每次产生可能需要两次反转,也可能1次就搞定,可能0次.0次是因为该数已经在最终位置上:1次搞定是因为最大数已经在栈顶(最左边),一反转…
题目: 给出一个序列,问将1,2,3,4……按从小到大的顺序入栈,能否得到给出的序列. 思路: 用stack模拟就可以了. 当前的cnt如果小于a[i],就将cnt入栈,否则就判断栈顶是不是和a[i]相等,如果相等则弹出,如果不相等,就不能获得给出的序列. 代码: #include <bits/stdc++.h> #define inf 0x3f3f3f3f #define MAX 1000000000 #define mod 1000000007 #define FRE() freopen(…
题目: 给出一棵树的BFS和DFS序列,输出这棵树中每个结点的子结点列表.BFS和DFS序列在生成的时候,当一个结点被扩展时,其所有子结点应该按照编号从小 到大的顺序访问. 思路: 一开始是想根据BFS和DFS序列来建树做这个题,但是利用BFS处理好分层之后就卡死了. 1.可以先处理好BFS中每个结点的距离. 2.在输入DFS时判断如果x点到根的距离比栈顶元素到根的距离多于1,那x就是栈顶元素的孩子结点,将x压入栈中.如果距离等于1说明x与栈顶元素是兄弟结点, 弹出栈定元素. 总结: 1.在DF…