poj1068 模拟
#include<iostream> using namespace std; int main() { int n; int p[21]; int res[21]; int visited[21]; cin>>n; while(n--) { memset(visited,0,sizeof(visited)); int m; cin>>m; int i,j; for(i=1;i<=m;i++) { scanf("%d",&p[i]); int flag=p[i]; while(visited[flag])//每次向前回溯,找到第一个没被匹配的右括号; { flag--; } res[i]=p[i]-flag+1; visited[flag]=1;//标记 } for(i=1;i<=m;i++) { cout<<res[i]; if(i<m)cout<<" "; } cout<<endl; } return 0; }
题意:
给出一种对括号的描述:即每个右括号前面有几个左括号;将其改成另一种描述:每一个右括号和距离它的第几个左括号匹配;