11111 - Generalized Matrioshkas
2014-01-25 18:09
363 查看
题目:11111 - Generalized Matrioshkas
题目大意:判断给的一个序列是否满足下列的要求:
1,是否匹配,例如(-1, 1, 1, 1), (-1)这样不匹配。
2,是否能满足负数先与对应的正数输出,例如(1, -1, 1, -1)这样错误。
3,是否满足将要进栈的数大于栈顶元素。例如(-1, -2, 2,1)这样错误。
4,判断子序列中的孩子相加小于这个序列的首元素,例如(-3,-2,2,-1,1,3)因为这个子序列的孩子= 2+1 不小于3,所以错误。
解题思路:用一个栈来存放,负数进栈,正数如果加上栈顶的负数等于0就出栈(前提栈要不为空),如果不为0就不满足要求。还要判断第一个数如果是正数的话,就直接不满足要求。还要判断子序列的孩子是否小于子序列的首元素。(这里用计数的方法,每次当一个数要进栈时,就将栈顶元素先取下来,孩子的变量减去要进栈的数,标志这个数是我的孩子)。最后在判断栈空吗?不空空就不满足要求。这些要求都满足的就符合要求。
题目大意:判断给的一个序列是否满足下列的要求:
1,是否匹配,例如(-1, 1, 1, 1), (-1)这样不匹配。
2,是否能满足负数先与对应的正数输出,例如(1, -1, 1, -1)这样错误。
3,是否满足将要进栈的数大于栈顶元素。例如(-1, -2, 2,1)这样错误。
4,判断子序列中的孩子相加小于这个序列的首元素,例如(-3,-2,2,-1,1,3)因为这个子序列的孩子= 2+1 不小于3,所以错误。
解题思路:用一个栈来存放,负数进栈,正数如果加上栈顶的负数等于0就出栈(前提栈要不为空),如果不为0就不满足要求。还要判断第一个数如果是正数的话,就直接不满足要求。还要判断子序列的孩子是否小于子序列的首元素。(这里用计数的方法,每次当一个数要进栈时,就将栈顶元素先取下来,孩子的变量减去要进栈的数,标志这个数是我的孩子)。最后在判断栈空吗?不空空就不满足要求。这些要求都满足的就符合要求。
#include<stdio.h> #include<string.h> #include<stack> using namespace std; const int N = 10000001; struct toy { int value; int childs; }t ; stack <toy> st; int main() { int len = 0, i; char ch; while(scanf("%d%c", &t[len++].value, &ch) != EOF) { if(ch == '\n') { for(i = 0; i < len; i++) t[i].childs = 0; bool bo = 1; for( i = 0; i < len; i++) { if(t[i].value < 0 && (st.empty() || st.top().value < t[i].value)) { if(!st.empty()) { toy a; a.value = st.top().value; a.childs = st.top().childs - t[i].value; st.pop(); st.push(a); } st.push(t[i]); } else if(!st.empty() && st.top().value > t[i].value) { bo = 0; break; } else if(t[i].value > 0 && st.empty() != true) { if(st.top().value + t[i].value == 0) { if(st.top().childs + st.top().value >= 0) { bo = 0; break; } st.pop(); } else { } } else { bo = 0; break; } } if(!st.empty()) bo = 0; if(bo) printf(":-) Matrioshka!\n"); else printf(":-( Try again.\n"); while(!st.empty()) st.pop(); len = 0; } } return 0; }
相关文章推荐
- 11111
- UVa 11111 - Generalized Matrioshkas
- uva 11111
- UVA11111 Generalized Matrioshkas
- UVA 11111 Generalized Matrioshkas
- UVA-11111 Generalized Matrioshkas
- 11111啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
- 11111
- UVA 11111 一般XX
- UVA 11111 Generalized Matrioshkas
- Uva 11111 - Generalized Matrioshkas
- UVA11111套娃匹配题,注意字符串流使用简化代码
- uva 11111
- 11111
- uva 11111
- 11111 - Generalized Matrioshkas
- 11111
- UVA 11111 (暑期-线性表-G- Generalized Matrioshkas)
- UVA 11111-Generalized Matrioshkas(栈)
- 11111 lin_stack