括號配對問題--一道ACM線上測試題
今天在南陽理工學院的線上ACM測試上做了一道題,簡直弱爆了。。。請看原題:
描述 現在,有一行括號序列,請你檢查這行括號是否配對。- 輸入
- 第一行輸入一個數N(0<N<=100),表示有N組測試資料。後面的N行輸入多組輸入資料,每組輸入資料都是一個字串S(S的長度小於10000,且S不是空串),測試資料組數少於5組。資料保證S中只含有"[","]","(",")"四種字元
- 輸出
- 每組輸入資料的輸出佔一行,如果該字串中所含的括號是配對的,則輸出Yes,如果不配對則輸出No
- 樣例輸入
-
3 [(]) (]) ([[]()])
- 樣例輸出
-
No No Yes
我的解:
#include <stdio.h> #include <string.h> int Peidui(char *p) { int xx,yy; char *ptmp; ptmp=p; while( *ptmp !='\0') { xx=yy=0; if( *ptmp == '(' ) { xx=1; } else if( *ptmp == '[') { yy=1; } else return -1; if(xx) { while((*(++ptmp) !='\0') && (xx != 0)) { if(*ptmp == '(') xx++; if(*ptmp == '[') yy++; if(*ptmp == ')') { xx--; if(xx<0) return -1; } if(*ptmp == ']') { yy--; if(yy<0) return -1; } } if(yy) { return -1; } } if(yy) { while((*(++ptmp) !='\0')&&(yy != 0)) { if(*ptmp == '(') xx++; if(*ptmp == '[') yy++; if(*ptmp == ')') { xx--; if(xx<0) return -1; } if(*ptmp == ']') { yy--; if(yy<0) return -1; } } if(xx) { return -1; } } } return 0; } int main() { int testNum,res,i=0,j=0; int x=0,y=0,len; char testData[10010]; scanf("%d",&testNum); if((testNum<=0) || (testNum>100)) return 0; for(i=0;i<testNum;i++) { scanf("%s",testData); len=strlen(testData); if((len>=10000) && (len==0)) { i--; continue; } j=0; while(testData[j] !='\0') { switch(testData[j]) { case '(':x++;break; case ')':x--;break; case '[':y++;break; case ']':y--;break; //default:return 0; } j++; } if(x==0 && y==0) { res=Peidui(testData); if(res==0) printf("Yes\n"); else printf("No\n"); } else printf("No\n"); x=y=0; } return 0; }
相關推薦
括號配對問題--一道ACM線上測試題
今天在南陽理工學院的線上ACM測試上做了一道題,簡直弱爆了。。。請看原題: 描述 現在,有一行括號序列,請你檢查這行括號是否配對。 輸入第一行輸入一個數N(0<N<=100),表示有N組測試資料。後面的N行輸入多組輸入資料,每組輸入資料都是一個字串S(S的長度
ACM 括號配對問題
括號配對問題描述現在,有一行括號序列,請你檢查這行括號是否配對。輸入第一行輸入一個數N(0<N<=100),表示有N組測試資料。後面的N行輸入多組輸入資料,每組輸入資料都是一個字串S(S的長度小於10000,且S不是空串),測試資料組數少於5組。資料保證S中只
括號配對問題 (一道OJ題目)
括號配對問題時間限制:3000 ms | 記憶體限制:65535 KB難度:3描述現在,有一行括號序列,請你檢查這行括號是否配對。輸入第一行輸入一個數N(0<N<=100),表示有N組測試資料。後面的N行輸入多組輸入資料,每組輸入資料都是一個字串S(S的長度小
ACM-括號配對問題
題目 括號配對問題 時間限制:3000 ms | 記憶體限制:65535 KB 難度:3 描述 現在,有一行括號序列,請你檢查這行括號是否配對。 輸入 第一行輸入一個數N(0<N<=100),表示有N組測試資料。後面的N行輸入多組輸入資料,每
括號配對問題2
main 輸入一個數 函數 字符 stdio.h stdlib.h return 長度 括號配對 #include<stdio.h> #include<string.h> #include<stdlib.h> // 寫一個判斷的括號是否匹
括號配對問題1
turn ces ID typedef lse tac pre types amp #include<stdio.h> #include<stdlib.h> #define Stack_size 10000 typedef struct
括號配對問題
wid -- highlight width image 結果 line ext 圖片 原題鏈接:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=2 括號配對問題 時間限制:3000 ms | 內存限制:6553
1346: 括號配對
1346: 括號配對 時間限制: 1 Sec 記憶體限制: 256 MB 題目描述 給出一串長度為n的括號序列(只包含小括號),計算出最少的交換(兩兩交換)次數,使整個括號序列匹配。 我們認為一個括號匹配,即對任意一個')',在其左側都有一個'(
NYOJ 括號配對問題
時間限制:3000 ms | 記憶體限制:65535 KB 難度:3 輸入 第一行輸入一個數N(0<N<=100),表示有N組測試資料。後面的N行輸入多組輸入資料,每組輸入資料都是一個字串S(S的長度小於10000,且S不是空串),測試資料組數少於5組
NYOJ 2題------括號配對問題
括號配對問題 時間限制:3000 ms | 記憶體限制:65535 KB 難度:3 描述 現在,有一行括號序列,請你檢查這行括號是否配對。 輸入 第一行輸入一個數N(0<N<=100),表示有N組測試資料。後面的N行
nyoj2 括號配對問題
描述: 現在,有一行括號序列,請你檢查這行括號是否配對。 輸入: 第一行輸入一個數N(0<N<=100),表示有N組測試資料。後面的N行輸入多組輸入資料 每組輸入資料都是一個字串S(S的長度小於10000,且S不是空串), 測試資料組數少於5組。資料保證S中只含有"[", “]”
程式設計練習題:括號配對問題(Java)
問題描述:問題描述 : 輸入一個字串 裡面只含有 [ , ] , ( , ) 四種括號 ; 現要求判斷這個字串 是否滿足括號匹配 如 ([])() 是匹配的 ([)]是不匹配的
NYOJ-2-括號配對問題 棧
現在,有一行括號序列,請你檢查這行括號是否配對。 輸入 第一行輸入一個數N(0<N<=100),表示有N組測試資料。後面的N行輸入多組輸入資料,每組輸入資料都是一個字串S(S的長度小於10000,且S不是空串),測試資料組數少於5組。資料保證S中只含有”[“,”]
phpMyAdmin 的低階程式碼錯誤:括號配對
錯誤提示: Warning in ./libraries/sql.lib.php#601 count(): Parameter must be an array or an object that im
字串中括號配對檢查(java實現)
題目描述 對於一行程式碼(字串),裡面可能出現大括號“{}”、中括號“[]”和小括號“()”,請程式設計判斷改行程式碼的括號巢狀是否正確。“()”,“({})”,“printf(‘Hello Netease’)”等都是括號使用的正確方法,“(}”,”print(Hello
括號配對問題(C)
描述 現在,有一行括號序列,請你檢查這行括號是否配對。 輸入 第一行輸入一個數N(0<N<=100),表示有N組測試資料。後面的N行輸入多組輸入資料,每組輸入資料都是一個字串S(S的長度小於
ACM線上評測系統 各大高校的ACM線上測評系統
點選開啟連結 山東理工大學http://acm.sdut.edu.cn/ 南陽理工學院http://acm.nyist.net/JudgeOnline/ 浙江大學http://acm.zju.edu.cn 北京大學http://acm.pku.edu.cn/JudgeOn
第二道題:括號配對問題
這道題著實費了我不少時間(90分鐘==。),問題的關鍵是怎麼全面判斷括號是否配對,我原來的思路是比較各個括號的個數,毫無疑問,這會漏掉許多情況,比如 ] [ 、[ ( ] )…然後我就打算直接比較字串,由兩邊到中間,一 一比較,但這仍然會漏掉一些情況,比如 ([
括號配對(用棧實現)
#include<iostream> #include<cstdio> #include<stack> using namespace std; int main() { char ch; stack<char>mysta
[NYOJ] 02括號配對問題(c語言鏈棧實現)
括號配對問題 時間限制:3000 ms | 記憶體限制:65535 KB 難度:3 描述現在,有一行括號序列,請你檢查這行括號是否配對。 輸入第一行輸入一個數N(0<N&