poj1068 Parencodings
2017-04-19 17:37
162 查看
原题链接:Parencodings
题意:
S (((()()())))
P-sequence 4 5 6666 从左到右每个右括号之前左括号的个数
W-sequence 1 1 1456 从左到右每个右括号和与之配对的左括号内有多少对括号(包括其本身)
#include <cstdio>
const int MAX_N = 20;
int p[MAX_N], w[MAX_N], p1[MAX_N]; //p1[i]表示第i个右括号 左边 相邻左括号的个数
int main(){
int T, n, i, j;
scanf("%d", &T);
while(T --){
scanf("%d", &n);
for(i = 0;i < n;i ++){
scanf("%d", &p[i]);
p1[i] = i > 0 ? p[i] - p[i - 1] : p[i]; //转换为第i个右括号
}
for(i = 0;i < n;i ++){
for(j = i, w[i] = 1; !p1[j --] ;w[i] ++); //w[i]加上左边相邻右括号的个数+1
p1[j + 1] --;
}
for(i = 0;i < n;i ++)
printf("%d%c", w[i], i == n - 1 ? '\n' : ' ');
}
return 0;
}
题意:
S (((()()())))
P-sequence 4 5 6666 从左到右每个右括号之前左括号的个数
W-sequence 1 1 1456 从左到右每个右括号和与之配对的左括号内有多少对括号(包括其本身)
#include <cstdio>
const int MAX_N = 20;
int p[MAX_N], w[MAX_N], p1[MAX_N]; //p1[i]表示第i个右括号 左边 相邻左括号的个数
int main(){
int T, n, i, j;
scanf("%d", &T);
while(T --){
scanf("%d", &n);
for(i = 0;i < n;i ++){
scanf("%d", &p[i]);
p1[i] = i > 0 ? p[i] - p[i - 1] : p[i]; //转换为第i个右括号
}
for(i = 0;i < n;i ++){
for(j = i, w[i] = 1; !p1[j --] ;w[i] ++); //w[i]加上左边相邻右括号的个数+1
p1[j + 1] --;
}
for(i = 0;i < n;i ++)
printf("%d%c", w[i], i == n - 1 ? '\n' : ' ');
}
return 0;
}
#include <stdio.h> #include <string.h> int p[22], w[22]; int bra[50]; //保存括号0:左括号 1:右括号 int main(){ int T, n; scanf("%d", &T); while(T --){ memset(bra, 0, sizeof(bra)); int i, j; scanf("%d", &n); int t = 0; for(i = 0;i < n;i ++){ scanf("%d", &p[i]); if(i > 0) t += p[i] - p[i - 1] + 1; else t = p[0]; bra[t] = 1; //此处为右括号 } // for(i = 0;i < 2 * n;i ++) // printf("%d%c", bra[i], i == 2 * n - 1 ? '\n' : ' '); int dex = 0; for(i = 0;i < 2 * n;i ++){ if(bra[i] == 1){ //遇到右括号时 int cnt = 1, vis = 0; for(j = i - 1;j >= 0;j --){ if(bra[j] == 0){ //右括号左边是左括号 if(vis == 0){ w[dex ++] = cnt; break; } vis --; //遇到左括号与右括号配对,数量减一 }else{ //左边是右括号,数量加1 cnt ++; vis ++; //记录左边右括号的个数 } } } } for(i = 0;i < n;i ++){ printf("%d%c", w[i], i == n - 1 ? '\n' : ' '); } } return 0; }
相关文章推荐
- POJ 1068 Parencodings
- [POJ_1068]Parencodings
- POJ1068 Parencodings 解题报告
- POJ 1068 Parencodings (模拟)
- POJ 1068 Parencodings (字符串处理)
- POJ 1068 Parencodings
- poj 1068 Parencodings/bnuoj 1187 Parencodings 解题报告
- POJ 1068 Parencodings
- poj 1068: Parencodings
- poj1068 Parencodings【模拟】【刷题计划】
- POJ 1068 Parencodings
- poj 1068 Parencodings(模拟)
- POJ 1068 Parencodings
- poj 1068--Parencodings
- Parencodings(POJ 1068)
- poj 1068 Parencodings
- POJ1068 Parencodings(模拟)
- poj 1068 Parencodings
- poj1068 Parencodings 模拟水题
- poj 1068 Parencodings