चार वेरिएबल्स a, b, c, d दिए गए हैं जिनके पूर्वनिर्धारित मान हैं जो उपयोग किए गए वेरिएबल के आधार पर दिए गए ब्रैकेट को प्रिंट करेंगे।
जहां वेरिएबल:
a के लिए (( b के लिए () c के लिए )( d के लिए ))
कार्य सभी दिए गए ब्रैकेट्स का उपयोग करके संतुलित ब्रैकेट एक्सप्रेशन प्रिंट करना है। यदि हम संतुलित ब्रैकेट एक्सप्रेशन नहीं बना सकते तो -1 प्रिंट करें। कई उत्तर होने की स्थिति में हम दिए गए ब्रैकेट्स का उपयोग करके बनने वाले किसी भी एक उत्तर को प्रिंट कर सकते हैं।
उदाहरण
इनपुट: a = 3, b = 2, c = 4, d = 3 आउटपुट: (((((()()()()())))))()()
इस परिणाम को प्राप्त करने के लिए, हम पहले जांच सकते हैं कि दिए गए ब्रैकेट्स की संख्या से संतुलित ब्रैकेट एक्सप्रेशन बनाया जा सकता है या नहीं। यदि एक्सप्रेशन दिए गए ब्रैकेट्स की संख्या से बनाया जा सकता है तो हम:
- टाइप 1 ब्रैकेट्स की संख्या प्रिंट करें।
- टाइप 3 ब्रैकेट्स की संख्या प्रिंट करें।
- टाइप 4 ब्रैकेट्स की संख्या प्रिंट करें।
- टाइप 2 ब्रैकेट्स की संख्या प्रिंट करें।
एल्गोरिथ्म
शुरुआत
चरण 1 → फ़ंक्शन void print(int a, int b, int c, int d) घोषित करें
int i घोषित करें
IF ((a == d && a) || (a == 0 && c == 0 && d == 0))
लूप i=1 से i<=a तक i++
"((" प्रिंट करें
अंत
लूप i=1 से i<=c तक i++
")(" प्रिंट करें
अंत
लूप i=1 से i<=d तक i++
"))" प्रिंट करें
अंत
लूप i=1 से i<=b तक i++
"()" प्रिंट करें
अंत
अन्यथा
"नहीं बन सकता" प्रिंट करें
चरण 2 → main()
int a = 3, b = 2, c = 4, d = 3 घोषित करें
print(a,b,c,d) कॉल करें
रुकें
उदाहरण कोड
#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("नहीं बन सकता");
}
int main() {
int a = 3, b = 2, c = 4, d = 3;
print(a, b, c, d);
return 0;
}
आउटपुट
यदि हम उपरोक्त प्रोग्राम चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा:
(((((()()()()())))))()()