C 언어 실현 블 루 브리지 컵 역대 시험 문제 정규 문제

5635 단어 블 루 브리지 컵
시험 문제
                                                                                  블 루 브리지 컵 시험 문제 풀이 링크
자원 제한
       시간 제한: 1.0s 메모리 제한: 256.0MB
문제 설명
       간단 한 정규 표현 식 을 고려 합 니 다. x () | 로 만 구 성 된 정규 표현 식 입 니 다.샤 오 밍 은 이 정규 표현 식 이 받 아들 일 수 있 는 가장 긴 문자열 의 길 이 를 구 하려 고 합 니 다.예 를 들 어 (xx | xxx) x | (x | xx) xx 가 받 아들 일 수 있 는 가장 긴 문자열 은 xxxxx 이 고 길 이 는 6 이다.
입력 형식
       x () | 로 구 성 된 정규 표현 식입력 길이 가 100 을 초과 하지 않 아 합 법 을 보장 합 니 다.
출력 형식
       이 정규 표현 식 이 받 아들 일 수 있 는 가장 긴 문자열 의 길이 입 니 다.
샘플 입력
((xx|xxx)x|(x|xx))xx

샘플 출력
6

데이터 규모 와 약정
      (    ) < 256M
CPU   < 1000ms

비고
링크 를 참고 하여 이 사내 의 생각 을 사 용 했 지만, 그 가 쓴 코드 는 블 루 브리지 컵 과 어 울 리 지 않 는 것 같 았 다.재 귀 된 출구 가 어디 에 있 는 지 궁금 한 사람 이 있 을 수 있 습 니 다. 견본 예 를 들 어 읽 어 보 세 요. 괄호 내용 이 모두 끝 날 때 첫 번 째 dfs () 의 count + = dfs () 로 돌아 갑 니 다. 이때 count = 4;그리고 ch = '(getchat () 가 리 턴 을 문자 로 읽 을 때 까지 계속 순환 합 니 다) (이때 count = 6) 가 if 에 들 어가 면 else 문장 (비교 max 와 count) 이 최대 값 을 되 돌려 줍 니 다.
코드
#include
int dfs(){
	char ch;
	int max=0,count=0;// max    count     
	while(1){
		ch=getchar();//            
		if(ch=='x') count++;//  
		else if(ch=='|'){//   |   |             0 
			max=(max>count)?max:count;
			count=0;
		}else if(ch=='(') count+=dfs();//   (   
		else{//   )     ,       
max=(max>count)?max:count; printf("max=%d
"
,max); return max; } } } int main(){ printf("%d",dfs()); return 0; }

좋은 웹페이지 즐겨찾기