标签:poj1068parencodings poj poj1068 vector
背景:做这道题的时候,完全无法理解题意,无赖使用了百度翻译,可翻译出来的东西一点也不容易理解,最后实在没办法了,就看了解题报告里面的大致题意描述。
思路:首先用vector存储括号,右括号用0表示,左括号用1表示,并在存储过程中,用另外一个vector存储下右括号在整个brackets中的位置,这样就可以少一次检索,然后在依次处理brackets数组中的元素。
学习:vector的使用。
#include <iostream> #include <vector> using namespace std; vector<int> brackets,p; int main() { int n; cin>>n; while(n--) { int m,j=0; cin>>m; while(m--) { int k; cin>>k; for(int i=j;i<k;i++) brackets.push_back(1); brackets.push_back(0); p.push_back(brackets.size()-1); j=k; } for(int i=0;i<p.size();i++) { int f=1,d=p[i],w=1; for(j=d-1;j>=0;j--) { if(brackets[j]==0) {f++;w++;} if(brackets[j]==1) f--; if(f==0) break; } cout<<w<<' '; } cout<<endl; brackets.clear(); p.clear(); } return 0; }
标签:poj1068parencodings poj poj1068 vector
原文地址:http://blog.csdn.net/qiweigo/article/details/43701645