题意:数字是几就代表有几个括号。
思维:比较一个数字与下一个数字的大小
#include<cstdio>
#include<iostream>
using namespace std;
int t;
int main(){
scanf("%d",&t);
for(int k=1;k<=t;k++){
string a,b;
cin>>a;
if(a.length()==1){
int t=a[0]-'0';
int j=t;
while(j--) b+="(";
b+=a[0];
j=t;
while(j--) b+=")";
printf("Case #%d: ",k);
cout<<b<<endl;
continue;
}
int x=0;
for(int i=0;i<a.length();i++){
if(i==0){
int t=a[i]-'0';
x=t;
while(t--)
b+="(";
b+=a[i];
}
else if(i!=0&&i!=a.length()-1){
int t=a[i]-'0';
if(t>x){
int j=t-x;
while(j--)
b+="(";
b+=a[i];
x=t;
}
else if(t<x){
int j=x-t;
while(j--)
b+=")";
b+=a[i];
x=t;
}
else{
b+=a[i];
x=t;
}
}
else if(i==a.length()-1){
int t=a[i]-'0';
if(t>x){
int j=t-x;
while(j--)b+="(";
b+=a[i];
while(t--)b+=")";
}
else if(x>t){
int j=x-t;
while(j--)b+=")";
b+=a[i];
while(t--)b+=")";
}
else{
b+=a[i];
while(t--)b+=")";
}
}
}
printf("Case #%d: ",k);
cout<<b<<endl;
}
return 0;
}