From faf2975ea7a8e7692db6c88da97fb4a9c58f3a88 Mon Sep 17 00:00:00 2001 From: Jibesh Roy Date: Sun, 8 Oct 2023 09:29:12 +0530 Subject: [PATCH 1/4] Added new file Generate Parenthesis --- backtracking/generate_parenthesis.py | 48 ++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 backtracking/generate_parenthesis.py diff --git a/backtracking/generate_parenthesis.py b/backtracking/generate_parenthesis.py new file mode 100644 index 000000000000..f321e17e20c5 --- /dev/null +++ b/backtracking/generate_parenthesis.py @@ -0,0 +1,48 @@ +""" + Given 'n' Pairs of parenthesis, + this program generates all combinations of parenthesis + Example, n=3 : + [ + "((()))", + "(()())", + "(())()", + "()(())", + "()()()" + ] + This problem is solved using Backtracking +""" +def solve(op,open,close, ans): + if(open == 0 and close == 0): + ans.append(op) + return + if(open == close): + op1 = op + op1+=('(') + solve(op1, open-1, close, ans) + elif(open == 0): + op1 = op + op1+=(')') + solve(op1, open, close-1, ans) + elif(close == 0): + op1 = op + op1+=('(') + solve(op1, open-1, close, ans) + else: + op1 = op + op2 = op + op1+=('(') + op2+=(')') + solve(op1, open-1, close, ans) + solve(op2, open, close-1, ans) + + +def generateParenthesis(n): + open = n + close = n + ans=[] + op = "" + solve(op, open, close, ans) + return ans + + +print(generateParenthesis(3)) \ No newline at end of file From 60fc3942b87b13ae67116eabb7ae1b9c6e91c15c Mon Sep 17 00:00:00 2001 From: Jibesh10101011 <114723590+Jibesh10101011@users.noreply.github.com> Date: Sun, 8 Oct 2023 09:40:38 +0530 Subject: [PATCH 2/4] Update generate_parenthesis.py --- backtracking/generate_parenthesis.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backtracking/generate_parenthesis.py b/backtracking/generate_parenthesis.py index f321e17e20c5..64df529add63 100644 --- a/backtracking/generate_parenthesis.py +++ b/backtracking/generate_parenthesis.py @@ -36,7 +36,7 @@ def solve(op,open,close, ans): solve(op2, open, close-1, ans) -def generateParenthesis(n): +def generate_parenthesis(n): open = n close = n ans=[] @@ -45,4 +45,4 @@ def generateParenthesis(n): return ans -print(generateParenthesis(3)) \ No newline at end of file +print(generateParenthesis(3)) From 98d7c272bec658859251b894981deb4a9b0e074e Mon Sep 17 00:00:00 2001 From: Jibesh10101011 <114723590+Jibesh10101011@users.noreply.github.com> Date: Sun, 8 Oct 2023 09:41:12 +0530 Subject: [PATCH 3/4] Update generate_parenthesis.py --- backtracking/generate_parenthesis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backtracking/generate_parenthesis.py b/backtracking/generate_parenthesis.py index 64df529add63..1a106c255549 100644 --- a/backtracking/generate_parenthesis.py +++ b/backtracking/generate_parenthesis.py @@ -45,4 +45,4 @@ def generate_parenthesis(n): return ans -print(generateParenthesis(3)) +print(generate_parenthesis(3)) From b0a0f676be2046f4864de5abe266bbf51d032590 Mon Sep 17 00:00:00 2001 From: Jibesh10101011 <114723590+Jibesh10101011@users.noreply.github.com> Date: Sun, 8 Oct 2023 09:48:34 +0530 Subject: [PATCH 4/4] Update generate_parenthesis.py --- backtracking/generate_parenthesis.py | 68 ++++++++++++++-------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/backtracking/generate_parenthesis.py b/backtracking/generate_parenthesis.py index 1a106c255549..a3d0bd100679 100644 --- a/backtracking/generate_parenthesis.py +++ b/backtracking/generate_parenthesis.py @@ -1,48 +1,48 @@ """ - Given 'n' Pairs of parenthesis, - this program generates all combinations of parenthesis - Example, n=3 : - [ - "((()))", - "(()())", - "(())()", - "()(())", - "()()()" - ] - This problem is solved using Backtracking +Given 'n' Pairs of parenthesis, +this program generates all combinations of parenthesis +Example, n=3 : +[ + "((()))", + "(()())", + "(())()", + "()(())", + "()()()" +] +This problem is solved using Backtracking """ def solve(op,open,close, ans): if(open == 0 and close == 0): - ans.append(op) - return + ans.append(op) + return if(open == close): - op1 = op - op1+=('(') - solve(op1, open-1, close, ans) + op1 = op + op1+=('(') + solve(op1, open-1, close, ans) elif(open == 0): - op1 = op - op1+=(')') - solve(op1, open, close-1, ans) + op1 = op + op1+=(')') + solve(op1, open, close-1, ans) elif(close == 0): - op1 = op - op1+=('(') - solve(op1, open-1, close, ans) + op1 = op + op1+=('(') + solve(op1, open-1, close, ans) else: - op1 = op - op2 = op - op1+=('(') - op2+=(')') - solve(op1, open-1, close, ans) - solve(op2, open, close-1, ans) + op1 = op + op2 = op + op1+=('(') + op2+=(')') + solve(op1, open-1, close, ans) + solve(op2, open, close-1, ans) def generate_parenthesis(n): - open = n - close = n - ans=[] - op = "" - solve(op, open, close, ans) - return ans + open = n + close = n + ans=[] + op = "" + solve(op, open, close, ans) + return ans print(generate_parenthesis(3))