Cho 4 biến a, b, c, d đại diện cho số lượng 4 loại ngoặc:
acho((bcho()ccho)(dcho))
Dùng tất cả ngoặc cho trước để tạo biểu thức cân bằng, không được thì in -1.
Ví dụ
Input: a=3, b=2, c=4, d=3
Output: (((((()()()()())))))()()
Điều kiện: a == d && a > 0 HOẶC a == 0 && c == 0 && d == 0.
Thuật toán
BẮT ĐẦU
HÀM print(a,b,c,d)
NẾU (a==d && a) HOẶC (a==0 && c==0 && d==0) THÌ
IN "(" LẶP a LẦN
IN ")(" LẶP c LẦN
IN "))" LẶP d LẦN
IN "()" LẶP b LẦN
NGƯỢC LẠI IN "can't be formed"
KẾT THÚC
Chương trình C ví 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("can't be formed");
}
int main() {
int a = 3, b = 2, c = 4, d = 3;
print(a, b, c, d);
return 0;
}
Kết quả
(((((()()()()())))))()()