日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NYOJ 2 括号配对问题

發布時間:2023/12/1 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NYOJ 2 括号配对问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

括號配對問題

時間限制:3000 ms? |?????????? 內存限制:65535 KB 難度:3 描述
現在,有一行括號序列,請你檢查這行括號是否配對。 輸入
第一行輸入一個數N(0<N<=100),表示有N組測試數據。后面的N行輸入多組輸入數據,每組輸入數據都是一個字符串S(S的長度小于10000,且S不是空串),測試數據組數少于5組。數據保證S中只含有"[","]","(",")"四種字符
輸出
每組輸入數據的輸出占一行,如果該字符串中所含的括號是配對的,則輸出Yes,如果不配對則輸出No
樣例輸入
3 [(]) (]) ([[]()])
樣例輸出
No No Yes
/* 思路:通過對輸入的元素配對消元,然后檢查所有的元素是否都已配對消元,從而輸出最終的結果 */ #include<stdio.h> #define N 10000+10 char s[N];int main() {int n;char c,*p;scanf("%d\n",&n);while(n--){*s=getchar();p=s+1;while((c=getchar())!='\n'){if(*(p-1)==c-1||*(p-1)==c-2)p--;else*p++=c;}if(p==s)printf("Yes\n");elseprintf("No\n");} }


?堆棧實現:

#include<stdio.h> #include<stdlib.h>#define OK 1 #define ERROR 0 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10typedef char SElemType; typedef char Status;struct SqStack {SElemType *base;SElemType *top;int stacksize; };//初始化堆棧空間 Status InitStack(SqStack *S) {S->base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));if(!S->base)return ERROR;S->top=S->base;S->stacksize=STACK_INIT_SIZE;return OK; }//入棧操作 Status Push(SqStack *S,SElemType e) {if(S->top-S->base>=S->stacksize){S->base=(SElemType*)realloc(S->base,(S->stacksize+STACKINCREMENT)*sizeof(SElemType));if(S->base==NULL) return ERROR;S->top=S->base+S->stacksize;S->stacksize+=STACKINCREMENT;}*S->top++=e; return OK; }//入棧操作 Status Pop(SqStack *S,SElemType *e) {if(S->top==S->base)return ERROR;*e=*(--S->top); return OK; }//得到棧頂元素 Status GetTop(SqStack *S,SElemType *e) {if(S->top==S->base){*e='\0'; //??杖』?'\0'return ERROR;}*e=*(S->top-1);return OK; }Status StackEmpty(SqStack *S) {if(S->top==S->base)return 0;elsereturn 1; }int main() {SqStack S; int n;char a,b,c;scanf("%d",&n); getchar();if(InitStack(&S)){while(n--){ while(1){a=getchar(); //putchar(a);if(a=='\n')break;GetTop(&S,&b);if(a==b+1 || a==b+2){Pop(&S,&c);// printf("遇%c出棧操作 \n",a);} else{Push(&S,a);// printf("遇%c入棧操作 \n",a); }}if(!StackEmpty(&S)){printf("Yes\n");}else {printf("No\n");}S.top=S.base;} }}

?

?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的NYOJ 2 括号配对问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。