给一个pair的嵌套声明去掉标点的字符串,然后让你加上标点使得新的字符串符合语法规则
整体递归的思想,注意要将pair < , >作为一个整体
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <cmath>
#include <queue>
#include <cstring>
#include <cstdio>
using namespace std;
int n,cnt=0;
string s;
stringstream ss;
bool type[100001];
pair<int,int> a[100001];
int v[100001];
void print(int x)
{
if(a[x].first<0)
{
cout<<"int";
return;
}
cout<<"pair<";
print(a[x].first);
cout<<",";
print(a[x].second);
cout<<">";
return;
}
int main()
{
getline(cin,s);
getline(cin,s);
ss<<s;
for(n=0;!ss.eof();n++)
{
ss>>s;
type[n]=(s=="pair");
}
for(int i=n-1;i>=0;i--)
{
if(type[i])
{
if(cnt<2)
{
cout<<"Error occurred";
return 0;
}
a[i]=make_pair(v[cnt-1],v[cnt-2]);
cnt-=2;
}
else
a[i]=make_pair(-1,-1);
v[cnt++]=i;
}
if(cnt>1)
{
cout<<"Error occurred";
return 0;
}
print(0);
return 0;
}