NYOJ 305 표현 식 값 구하 기 (재 귀적)
시간 제한:
3000 ms | 메모리 제한:
65535 KB
난이도: 3
묘사 하 다.
Dr. Kong 이 디자인 한 로봇 카드 는 가감 법 연산 을 많이 파악 한 후에 최근 에 간단 한 함수 구 치 를 배 웠 다. 예 를 들 어 함수 min (20, 23) 의 값 이 20 이라는 것 을 알 게 되 었 다. ,add(10,98) 의 값 은 108 등등 이다.훈련 을 통 해 Dr. Kong 이 디자인 한 로봇 카드 는 심지어 더 복잡 한 표현 식 을 계산 할 수 있다.
가설 표현 식 은 간단하게 다음 과 같이 정의 할 수 있다.
1. 십 진수 x 표현 식 입 니 다.
2. 하면, 만약, 만약... x 화해시키다 y 예. 표현 식 함수 min (x, y )표현 식 중 소수.
3. 하면, 만약, 만약... x 화해시키다 y 예. 표현 식 함수 max (x, y )표현 식 중 최대 수.
4. 만약 x 화해시키다 y 예. 표현 식 함수 add (x, y )표현 식 화합
예컨대 표현 식 max(add(1,2),7) 값 7。
주어진 표현 식 에 대한 도움말 을 작성 하 십시오. Dr.Kong 카드 의 계산 오 류 를 교정 하기 위해 정 답 을 산출 하 다.
입력
첫 번 째 줄: N 은 계산 할 표현 식 개 수 를 표시 합 니 다 (1 ≤ N ≤ 10)
다음은 N 줄 이 있 습 니 다. 줄 마다 문자열 입 니 다. 값 을 표시 하 는 표현 식 입 니 다.
(표현 식 에 빈 칸 이 남아 있 지 않 습 니 다. 줄 당 300 자 를 넘 지 않 습 니 다. 표현 식 에 나타 난 10 진수 가 없습니다.
1000 이 넘다.)
출력
출력 은 N 줄 이 있 습 니 다. 각 줄 은 표현 식 의 값 에 대응 합 니 다.
샘플 입력
3add(1,2) max(1,999) add(min(1,1000),add(100,99))
샘플 출력
3999200
근원
제4 회 하남성 프로 그래 밍 대회
업로드 자
장 운 총
재 귀적 으로 하기:
#include<stdio.h>
#include<iostream>
using namespace std;
char str[1005];
int start;
int vec(){
int v,n;
switch(str[start]){
case 'm':start+=3;
if(str[start-2]=='i')
return min(vec(),vec());
else return max(vec(),vec());
case 'a':start+=3;
return vec()+vec();
case '(':
case ')':
case ',':++start;
return vec();
default :sscanf(str+start,"%d%n",&v,&n);// str start v,v n ,
start+=n;
return v;// v
}
}
int main(){
int n;
scanf("%d
",&n);
while(n--){
start=0;
gets(str);
printf("%d
",vec());
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.