Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C 프로그램에서 주어진 대괄호를 사용하여 균형 대괄호 식을 인쇄하십시오.

<시간/>

사용된 변수에 따라 주어진 괄호를 인쇄할 사전 정의된 값과 함께 4개의 변수 a, b, c, d가 주어집니다.

변수,

a for ((
b for ()
c for )(
d for ))

작업은 주어진 모든 대괄호를 사용하고 균형 대괄호 표현식을 인쇄하는 것입니다. 균형 대괄호 표현식을 구성할 수 없으면 -1을 인쇄합니다. 여러 답변의 경우 주어진 대괄호를 사용하여 구성할 수 있는 여러 답변을 인쇄할 수 있습니다.

예시

Input: a = 3, b = 2, c = 4, d = 3
Output : (((((()()()()())))))()()

이 결과를 얻으려면 먼저 균형 괄호 표현식이 주어진 수의 괄호로 구성될 수 있는지 여부를 확인할 수 있습니다. 주어진 수의 대괄호로 표현식을 작성할 수 있다면 그렇게 할 것입니다.

  • 유형 1 괄호의 수를 인쇄하십시오.
  • 유형 3 대괄호의 수를 인쇄하십시오.
  • 유형 4 대괄호의 수를 인쇄하십시오.
  • 유형 2 대괄호의 수를 인쇄하십시오.

다음은 접근 방식의 알고리즘 및 구현입니다.

알고리즘

START
Step 1 -> Declare Function void print(int a, int b, int c, int d) Declare int i
   IF ((a == d && a) || (a == 0 && c == 0 && d == 0))
      Loop For i=1 and i<=a and i++
         Print ((
      End
      Loop For i=1 and i<=c and i++
         Print )(
      End
      Loop For i=1 and i<=d and i++
         Print ))
      End
      Loop For i=1 and i<=b and i++
         Print ()
      End
   Else
      Print can’t be formed
Step 2 -> main()
   Declare int a = 3, b = 2, c = 4, d = 3
   Call print(a,b,c,d)
STOP

예시

#include<stdio.h>
void print(int a, int b, int c, int d){
   int i;
   if ((a == d && a) || (a == 0 && c == 0 && d == 0)){
      for (i = 1; i <= a; i++)
         printf("((");
      for (i = 1; i <= c; i++)
         printf(")(");
      for (i = 1; i <= d; i++)
         printf("))");
      for (i = 1; i <= b; i++)
         printf("()");
   }
   else
      printf("can't be formed");
}
int main(){
   int a = 3, b = 2, c = 4, d = 3;
   print(a, b, c, d);
   return 0;
}

출력

위의 프로그램을 실행하면 다음 출력이 생성됩니다.

(((((()()()()())))))()()