Find all permutations of the given array

Given a number in the form of a list of digits, return all possible permutations.

For example, given [1,2,3], return [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]].

Example:

Input:  arr[]={1,2,3}
Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,2,1],[3,1,2]]

Approach

C++

#include <bits/stdc++.h>
using namespace std;

vector<vector<int>> ans;

//function to find all the permutaions of the
//given string
void permutations(vector<intarrint lint r)
{

    //base case if l and r same
    //then push the string into the
    //vector of strings
    if (l == r)
    {
        ans.push_back(arr);
    }
    else
    {
        for (int i = li <= ri++)
        {

            //swap the values
            swap(arr[l]arr[i]);

            //call for permutation
            permutations(arrl + 1r);

            //backtrack
            swap(arr[l]arr[i]);
        }
    }
}
int main()
{
    vector<intarr = {123};
    ans.clear();
    permutations(arr0arr.size() - 1);
    cout << "[";
    for (int i = 0i < ans.size(); i++)
    {
        cout << "[";
        for (int j = 0j < ans[i].size(); j++)
        {
            cout << ans[i][j];
            if (j != ans[i].size() - 1)
                cout << ",";
        }
        cout << "]";
        if (i != ans.size() - 1)
            cout << ",";
    }
    cout << "]";
    return 0;
}


No comments:

Post a Comment