Skip to main content

Finding permutations of a string using recursion

#include<bits/stdc++.h>
using namespace std;
void print_perm(char str[],int k,int n)
{
    if(k==n)
        cout<<str<<endl;
    else
    {
        for(int i=k;i<n;i++)
        {
            swap(str[k],str[i]);
            print_perm(str,k+1,n);
            swap(str[k],str[i]);
        }
    }
}
int main()
{
    char str[20];
    cout<<"Enter a string"<<endl;
    cin>>str;
    print_perm(str,0,strlen(str));
    return 0;
}

Comments

Popular posts from this blog

Reversing a stack using recursion

#include<bits/stdc++.h> using namespace std; stack<int> s2; void rev(stack<int> s) {     if(!s.empty())     {         int temp=s.top();         s.pop();         s2.push(temp);         rev(s);     } } void display(stack<int> s) {     while(!s.empty())     {         cout<<s.top()<<" ";         s.pop();     }     cout<<endl; } int main() {      stack<int> s;      int n;      cout<<"Enter the number of elements to push onto stack"<<endl;      cin>>n;      for (int i = 0; i < n; ++i)      {       ...

BFS of a graph

#include<bits/stdc++.h> using namespace std; class graph {     int v;     list<int> *adj; public:     graph(int v)     {         this->v=v;         adj=new list<int>[v];     }     void add_edge(int v,int w)     {         adj[v].push_back(w);     }     void bfs(int start); }; void graph:: bfs(int start) {     bool *visited=new bool[v];     for(int i=0;i<v;i++)         visited[i]=false;     visited[start]=true;     list<int> queue;     queue.push_back(start);     while(!queue.empty())     {         int s=queue.front();         cout<<s<...