您的位置:首页 > 其它

POJ1068 解题报告

2018-01-03 21:22 323 查看

POJ1068 解题报告

第一部分是我最初些的,后面的是从另外一个地方copy的;

https://www.cnblogs.com/zzhzz/p/5837815.html

#include <iostream>
#include <string.h>

using namespace std;

/*
S       (((()()())))

P-sequence      4 5 6666

W-sequence      1 1 1456
*/
//#define TEST
#define SIZE 30
char s[SIZE];
char buf[SIZE*30]={"466668999"};
char out[20];

int parse(int index){
int counter = 0;
int right=1;
for(int i=index-1;i>=0;i--){
if(s[i]==')'){
right++;
}else{
right--;
counter++;
if(right==0)
return counter;
}
}
}
void construct(char *in){
int counter=0;
int index=0;
int gap;
for(int i=0;i<strlen(in);i++){
if((gap=in[i]-'0'-counter)>0){
for(int j=0;j<gap;j++){
s[index++]='(';
}
counter = in[i]-'0';
}
s[index++]=')';
}
s[index]=0;
index = 0;
for(int i=0;i<strlen(s);i++){
if(s[i]==')')
out[index++]=parse(i)+'0';
}
out[index]=0;
//print
for(int i=0;i<index;i++){

4000
cout <<out[i]<<" ";
}
cout<<endl;
}

#if defined(TEST)
int main()
{
construct();
}
#else
int main()
{
int cases; //number of cases
int n,i,j;
char *p=buf;
cin >> cases;

for(i=0;i<cases;i++){
cin >> n;
for(j=0;j<n;j++){
cin >>p[j];
}
p[j]=0;
//p +=strlen(p)+1;
construct(p);
}
/*
p=buf;
for(i=0;i<cases;i++){
construct(p);
p +=strlen(p)+1;
}
*/
return 0;
}
#endif


https://www.cnblogs.com/zzhzz/p/5837815.html

#include <iostream>
#include <stack>
#include <cstring>
using namespace std;

int main(){
int N,a[30];
cin >> N;
while(N--){
int n;
cin >> n;
a[0] = 0;
for(int i = 1; i <= n; i++){
cin >> a[i];
int j = i - 1;
while(a[i] - a[j] < i - j) j--;
cout << (i-j) <<' ';
}
cout << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: