tyvj P4868天天和不可描述
Posted ssttkkl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tyvj P4868天天和不可描述相关的知识,希望对你有一定的参考价值。
超级水的题,用递归来模拟,用链表保存这层的内容,每遇到一个左括号就递归一层并合并返回的链表,遇到右括号后返回。
递归进入下一层时传递个参数标记读取新字符是加载链表头还是链表尾就好了。
(之前合并两个链表的时候不小心用成insert慢成傻逼,后来才发现insert是拷贝元素,splice才是合并元素)
#include <iostream> #include <list> using namespace std; list<char> s; char c; void getstr(bool rev, list<char> &tmp) { tmp.clear(); while (true) { c = cin.get(); if (c == ‘)‘) break; else if (c == ‘(‘) { list<char> tmp2; getstr(!rev, tmp2); if (rev) s.splice(tmp.begin(), tmp2); else s.splice(tmp.end(), tmp2); } else if (rev) tmp.push_front(c); else tmp.push_back(c); } } int main() { while (true) { c = cin.get(); if (c == EOF) break; else if (c == ‘(‘) { list<char> tmp; getstr(true, tmp); s.splice(s.end(), tmp); } else s.push_back(c); } for (list<char>::iterator iter = s.begin(); iter != s.end(); iter++) { cout << *iter; } return 0; }
以上是关于tyvj P4868天天和不可描述的主要内容,如果未能解决你的问题,请参考以下文章
ListView 不可点击,行中的所有小部件都是 TextView