到這個時間,雖然不是很晚,但是挺累的,白天是在實訓,晚上要去准備考研!回來的時候把這個題目給寫了,現在得趕緊去睡覺了,明天還要早起打卡,唉!
算法的具體思想明天在實驗室的時候找個時間來寫!
[cpp]
#include <iostream>
#include <stack>
using namespace std;
#define MAX 100 //整個的括號的長度不會超過50
/*284K 0MS*/
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
int *a=new int[n];
for(int i=0;i<n;i++)
cin>>a[i];
char str[MAX];
int count=0;
int index=0;
for(int i=0;i<n;i++)
{
int j;
for(j=count;j<a[i];j++)
str[index++]='(';
str[index++]=')';
count=a[i];
}
str[index]='\0';
int *b=new int[n];
int p=0;
//堆棧操作
stack<char> store;
for(int i=0;i<index;i++)
{
if(str[i]=='(')
store.push('(');
else
{
int num=0;
while(store.top()!='(')
{
num++;
store.pop();
}
num++;
b[p++]=num;
store.pop();
for(int k=0;k<num;k++)
store.push('*');
}
}
for(int i=0;i<p-1;i++)
cout<<b[i]<<" ";
cout<<b[p-1]<<endl;
delete []b;
delete []a;
}
system("pause");
return 0;
}
#include <iostream>
#include <stack>
using namespace std;
#define MAX 100 //整個的括號的長度不會超過50
/*284K 0MS*/
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
int *a=new int[n];
for(int i=0;i<n;i++)
cin>>a[i];
char str[MAX];
int count=0;
int index=0;
for(int i=0;i<n;i++)
{
int j;
for(j=count;j<a[i];j++)
str[index++]='(';
str[index++]=')';
count=a[i];
}
str[index]='\0';
int *b=new int[n];
int p=0;
//堆棧操作
stack<char> store;
for(int i=0;i<index;i++)
{
if(str[i]=='(')
store.push('(');
else
{
int num=0;
while(store.top()!='(')
{
num++;
store.pop();
}
num++;
b[p++]=num;
store.pop();
for(int k=0;k<num;k++)
store.push('*');
}
}
for(int i=0;i<p-1;i++)
cout<<b[i]<<" ";
cout<<b[p-1]<<endl;
delete []b;
delete []a;
}
system("pause");
return 0;
}