Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

พิมพ์นิพจน์วงเล็บสมดุลโดยใช้วงเล็บที่กำหนดใน C Program


กำหนดตัวแปรสี่ตัว 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;
}

ผลลัพธ์

หากเรารันโปรแกรมด้านบน มันจะสร้างผลลัพธ์ดังต่อไปนี้

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