Saturday, 19 September 2015

LightOJ 1023 – Discovering Permutations_Solution

// Tanzila Islam

// Southeast University

// mail : tanzilamohita@gmail.com

#include <cstdio>

#include <iostream>

#include <string>

using namespace std;


int N, K;


void recur(int length,int used[], string str){


    if( K == 0 ) return;        //prunning extra branches


    if( length == N ){

        cout &lt;&lt; str &lt;&lt; endl;

        K--;

        return;

    }


    for(int i = 0; i &lt; N; i++){

        if(!used[i]){


            string temp = str;

            temp +=  (char)(i+'A');

            used[i] = 1;

            recur(length+1, used, temp);

            used[i] = 0;

        }

    }

}


int main(){

    int T;

    cin &gt;&gt; T;

    for(int c = 1; c &lt;= T; c++){

        cin &gt;&gt; N &gt;&gt; K;


        int used[28];

        for(int j = 0; j &lt; N; j++)

            used[j] = 0;

        cout &lt;&lt; "Case " &lt;&lt; c &lt;&lt; ":" &lt;&lt; endl;

        recur(0,used,"");

    }


}

No comments:

Post a Comment