首页 > 代码库 > poj 1068 Parencodings 模拟
poj 1068 Parencodings 模拟
输入的是在每个‘ ) ‘前有多少‘ ( ’,
要我们求得是在每个‘ ) ’前有多少个‘ ) ’,
我的方法是将最原始的图給还原出来,再去寻找‘)’。
对于已经配对的要进行标记不要重复使用。。
#include<stdio.h> #include<string.h> int y[505],t[505]; char s[505]; int main() { int a,b,i,j,u; scanf("%d",&a); while(a--) { memset(y,0,sizeof(y)); memset(t,0,sizeof(t)); memset(s,0,sizeof(s)); scanf("%d",&b); for(i=0;i<b;i++) {scanf("%d",&y[i]); } int sum=1; int ans; for(i=0,j=0;i<505;i++) { if(sum<=y[j]) { s[i]='('; sum++; } else { s[i]=')'; j++; } if(j>=b) break; } u=strlen(s); for(i=0;i<u;i++) { if(s[i]=='(') continue; else { ans=1; t[i]=1; for(j=i-1;j>=0;j--) { if(s[j]==')') ans++; if(t[j]==0) { if(s[j]=='(') {t[j]=1;break;} } } printf("%d ",ans); } } printf("\n"); } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。