CSP 2019 - 03 - 24 시 문제

1858 단어 csp
24 시
제목 은 군말 에 불과 하 니 출력 결 과 는 제목 이 준 예 와 일치 해 야 합 니 다.
문제 풀이 방향:
데이터 구조 시간 에 사 용 했 던 스 택 의 조작 은 이 문 제 를 풀기 에 매우 적합 하고 간단 하면 서도 유연 하 다.
  • 두 개의 스 택 을 설치 하고 연산 수 와 연산 자
  • 를 각각 적재 합 니 다.
  • 입력 한 표현 식 을 읽 고 연산 수 와 연산 자의 스 택 에 각각 불 러 옵 니 다.(여기 서 교묘 한 것 은 곱셈 선 연산 재 압 잔 이 라면)
  • 연산 자의 스 택 을 옮 겨 다 니 며 비어 있 지 않 으 면 팝 업 연산 을 합 니 다.모두 비어 있 을 때 까지.
  • #include
    using namespace std;
    
    stack num;
    stack option;
    int main()
    {
     int i , j , n , temp;
     scanf("%d" , &n);
     getchar();
     int len[n];
     
     char str[10];
     for( i =0 ;i ='1' && str[j]<='9')
       num.push(str[j] - '0');
      else if(str[j] == '+')
       option.push(str[j]);
      else if(str[j] =='-')	//     
       {
        num.push( (str[++j] - '0')*(-1));
        option.push('+');
       }
      else if(str[j] == 'x')
       {
        temp = num.top();
        num.pop();
        temp = temp*(str[++j] - '0');
        num.push(temp);  
       } 
      else if(str[j] == '/')
       {
        temp = num.top();
        num.pop();
        temp = temp/(str[++j] - '0');
        num.push(temp);  
       } 
     }
    
     while(!option.empty())
     {
      int temp2;
      temp2 = num.top();
      num.pop();
      temp2 += num.top();
      num.pop();
      num.push(temp2);
      option.pop();
     }
      if(num.top() == 24)	//      
      len[i] = 1;
     else
      len[i] = 0;
    }
    
     for(i = 0 ; i < n ;i++)	//     
     {
      if(len[i])
       printf("Yes
    "); else printf("No
    "); } return 0; }

    주의 하 다.
  • 감법 할 때 + 번 호 를 눌 러 야 플러스 번 호 를 바 꿀 수 있 고 그 전에 추가 하 는 것 을 잊 어 버 렸 다.
  • 줄 을 입력 할 때 큰 순환 으로 제어 합 니 다.
  • 마지막 으로 Yes 와 No 를 출력 할 때 같이 출력 해 야 하지만 외부 순환 에서 이 루어 져 야 합 니 다. 그렇지 않 으 면 표현 식 을 입력 하면 해당 결 과 를 출력 합 니 다.
  • 좋은 웹페이지 즐겨찾기