GFG App
Open App
Browser
Continue

Print all the possible arithmetic expressions for a given number

Given an integer N, the task is to print all the possible arithmetic expressions using all numbers from 1 to N and with binary operator +, –, * and /.
Examples:

Input: n = 2
Output:
1+2, 1-2, 1/2, 1*2
Input: n = 3
Output:
1+2+3, 1+2-3, 1+2/3, 1+2*3, 1-2+3, 1-2-3, 1-2/3, 1-2*3
1/2+3, 1/2-3, 1/2/3, 1/2*3, 1*2+3, 1*2-3, 1*2/3, 1*2*3

Approach:

• We will create a character array of length = n + n – 1, because for an expression with n operands to be valid we will need n-1 operators

• Iterate the array and put numbers at even position whereas symbols at the odd position and call the function recursively.

• If number of characters becomes equal to the length of array, print the array.

Below is the implementation of the above approach:

CPP

 `// C++ program to print all the ` `// expressions for the input value `   `#include` `#include` `using` `namespace` `std;`   `// Function to print all the` `// expressions using the number` `void` `PrintRecursive(``char` `*str,``int` `arr[],` `                 ``int` `i, ``int` `n,``char` `*res,` `                 ``int` `j, ``int` `len,``int` `ln)` `{` `    ``// Termination condition` `    ``if``(j==len)` `    ``{` `        ``res[j]=``'\0'``;` `        ``cout<

Java

 `/*package whatever //do not write package name here */` `import` `java.util.*;`   `class` `GFG {`   `  ``// Function to print all the` `  ``// expressions using the number` `  ``static` `void` `PrintRecursive(``char` `[]str,``int` `arr[], ``int` `i,` `                             ``int` `n,``char` `[]res, ``int` `j, ` `                             ``int` `len,``int` `ln)` `  ``{` `    ``// Termination condition` `    ``if``(j == len)` `    ``{` `      ``System.out.println(res);` `      ``return``;` `    ``}` `    ``// Even position will contain ` `    ``// the numbers` `    ``if``(j%``2``==``0``)` `    ``{` `      ``res[j]=(``char``)(``'0'``+arr[i]);`   `      ``// Recursive call` `      ``PrintRecursive(str,arr,i+``1``,n,res,j+``1``,len,ln);` `    ``}` `    ``else` `    ``{` `      ``// Add a symbol from string in ` `      ``// odd position.` `      ``for``(``int` `k=``0``;k

Python3

 `# Python3 program to print all the ` `# expressions for the input value `   `# Function to print all the` `# expressions using the number` `def` `PrintRecursive(``str``, arr, i, n, res, j, ``len``, ln):` `    `  `    ``# Termination condition` `    ``if``(j``=``=``len``):` `        ``print``(res)` `        ``return`   `    ``# Even position will contain ` `    ``# the numbers` `    ``if``(j``%``2``=``=``0``):` `        ``res[j] ``=` `arr[i]` `        `  `        ``# Recursive call` `        ``PrintRecursive(``str``,arr,i``+``1``,n,res,j``+``1``,``len``,ln)` `    ``else``:` `        ``# Add a symbol from string in ` `        ``# odd position.` `        ``for` `k ``in` `range``(``0``,ln):` `            ``res[j] ``=` `str``[k]` `            ``PrintRecursive(``str``,arr,i,n,res,j``+``1``,``len``,ln)`   `def` `PrintExpressions(n):` `    ``# Character array containing ` `    ``# expressions ` `    ``str` `=` `[ ``'+'``,``'-'``,``'/'``,``'*'` `]` `    `  `    ``ln ``=` `len``(``str``)` `    `  `    ``a ``=` `[]` `    ``for` `i ``in` `range``(``0``,n):` `        ``a.append(``0``)` `        ``a[i] ``=` `i ``+` `1` `    ``res ``=` `[]` `    ``for` `i ``in` `range``(``0``,(``2` `*` `n)``-``1``):` `        ``res.append('')` `    `  `    ``PrintRecursive(``str``, a, ``0``, n, res, ``0``, ``2``*``n``-``1``, ln)` `    ``return`     `# Driver code` `n ``=` `2` `PrintExpressions(n)`   `# This code is contributed by akashish__`

C#

 `using` `System;` `using` `System.Collections.Generic;`   `public` `class` `GFG {`   `  ``// Function to print all the` `  ``// expressions using the number` `  ``public` `static` `void` `PrintRecursive(``char``[] str, ``int``[] arr,` `                                    ``int` `i, ``int` `n,` `                                    ``char``[] res, ``int` `j,` `                                    ``int` `len, ``int` `ln)` `  ``{` `    ``// Termination condition` `    ``if` `(j == len) {` `      ``Console.WriteLine(res);` `      ``return``;` `    ``}` `    ``// Even position will contain` `    ``// the numbers` `    ``if` `(j % 2 == 0) {` `      ``string` `temp = arr[i].ToString();` `      ``res[j] = temp[0];` `      ``// Recursive call` `      ``PrintRecursive(str, arr, i + 1, n, res, j + 1,` `                     ``len, ln);` `    ``}` `    ``else` `{` `      ``// Add a symbol from string in` `      ``// odd position.` `      ``for` `(``int` `k = 0; k < ln; k++) {` `        ``res[j] = str[k];` `        ``PrintRecursive(str, arr, i, n, res, j + 1,` `                       ``len, ln);` `      ``}` `    ``}` `  ``}`   `  ``public` `static` `void` `PrintExpressions(``int` `n)` `  ``{` `    ``// Character array containing` `    ``// expressions` `    ``char``[] str = ``new` `char``[4] { ``'+'``, ``'-'``, ``'/'``, ``'*'` `};`   `    ``int` `ln = str.Length;`   `    ``int``[] a = ``new` `int``[n];`   `    ``for` `(``int` `i = 0; i < n; i++) {` `      ``a[i] = i + 1;` `    ``}` `    ``char``[] res = ``new` `char``[(2 * n) - 1];`   `    ``PrintRecursive(str, a, 0, n, res, 0, 2 * n - 1, ln);` `    ``return``;` `  ``}`   `  ``static` `public` `void` `Main()` `  ``{`   `    ``int` `n = 2;`   `    ``PrintExpressions(n);` `  ``}` `}`   `// This code is contributed by akashish__`

Javascript

 `// JS program to print all the ` `// expressions for the input value `   `// Function to print all the` `// expressions using the number` `function` `PrintRecursive(str, arr, i, n, res, j, len, ln)` `{` `    ``// Termination condition` `    ``if``(j==len)` `    ``{` `        ``res[j];` `        ``console.log(res);` `        ``return``;` `    ``}` `    ``// Even position will contain ` `    ``// the numbers` `    ``if``(j%2==0)` `    ``{` `        ``res[j] = arr[i].toString();` `        `  `        ``// Recursive call` `         ``PrintRecursive(str,arr,i+1,n,res,j+1,len,ln);` `    ``}` `    ``else` `    ``{` `        ``// Add a symbol from string in ` `        ``// odd position.` `        ``for``(let k = 0; k < ln; k++)` `        ``{` `            ``res[j] = str[k];` `            ``PrintRecursive(str,arr,i,n,res,j+1,len,ln);` `        ``}` `    ``}` `}`   `function` `PrintExpressions(n)` `{` `    ``// Character array containing ` `    ``// expressions ` `    ``let str = [ ``'+'``,``'-'``,``'/'``,``'*'` `];` `    `  `    ``let ln=str.length;` `    `  `    ``let a = [];` `    ``for``(let i = 0; i < n; i++)` `    ``{` `        ``a.push(0);` `        ``a[i] = i + 1;` `    ``}` `    ``let res = [];` `    ``for``(let i = 0; i < ( 2 * n ) - 1; i++)` `    ``{` `        ``res.push(``''``);` `    ``}` `    `  `    ``PrintRecursive(str, a, 0, n, res, 0, 2*n-1, ln);` `    ``return``;` `}`   `// Driver code` `let n = 2;`   `PrintExpressions(n);`   `// This code is contributed by akashish__`

Output:

```1+2
1-2
1/2
1*2```

My Personal Notes arrow_drop_up