本文主要是介绍POJ Parencodings 栈模拟,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天看了一下 杰哥的ACM 总结,感觉以后自己写博客的时候需要 结合 别人的思路和自己的思路进行一些总结,只有这样,才能够有一些提升。
这个题的话,自己AC之后看了一下网上别人的代码,大同小异,思路都差不多
#include<cstdio>
#include<cstring>
#include<iostream>
#include<stack>
using namespace std;
#define N 300
int main(){int T;scanf("%d",&T);for(int Case = 1; Case <= T; Case++){int n;scanf("%d",&n);int array[N];for(int i = 0; i < n ; i++)scanf("%d",&array[i]);int ans[N] = {0};char s1[N];int x = 0,top = 0;for(int i = 0 ; i < n ; i++){int t = array[i] - x;for(int j = 0; j < t ; j++)s1[top++] = '(';s1[top++] = ')';x = array[i];}int num[N],topx = 0;for(int i = top - 1, k = 0 , t = n; i >= 0; i--){if(s1[i] == ')'){num[k++] = t;t--;}else if(s1[i] == '('){for(int j = 0 ; j < k ; j++){ans[num[j]] ++;}k--;}}for(int i = 1 ; i <= n ; i++){printf("%d",ans[i]);if(i < n) printf(" ");}printf("\n");}return 0 ;
}
这篇关于POJ Parencodings 栈模拟的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!