Permutation and combination in different way

package com.kartik;
import java.util.ArrayList;
import java.util.List;
/**
 *
 * @author kartik
 * Blog www.java2blogs.blogspot.com
 * One of the best way to do permutation of a data set is to by applying DFS , it help making all combination of a specified length
 */
public class DFS {
/**
* list of generated combination
*/
List<String> permutations = new ArrayList<String>();
/**
* input used to generate combination
*/
String input = "ABCDEF";
/**
* the length of the combination
*/
int conbinationSize = 3;
/**
* isChoosed[i] is true if the combination that is currently prepared
* contain index.charAt(i)
*/
boolean[] isChoosed = new boolean[input.length()];
/**
* the DFS method that will generate all possible combination
*
* @param partialOutput
*/
public void generateCombination(String partialOutput) {
if (partialOutput.length() == conbinationSize) {
permutations.add(partialOutput);
return;
}
for (int i = 0; i < input.length(); ++i) {
if (!isChoosed[i]) {
isChoosed[i] = true;
generateCombination(partialOutput + input.charAt(i));
isChoosed[i] = false;
}
}
}
void printCombination() {
for (String c : permutations) {
System.out.println(c);
}
}
public static void main(String[] args) {
DFS dfs = new DFS();
dfs.generateCombination("");
dfs.printCombination();
}
}
 out put:
ABC
ABD
ABE
ABF
ACB
ACD
ACE
ACF
ADB
ADC
ADE
ADF
AEB
AEC
AED
AEF
AFB
AFC
AFD
AFE
BAC
BAD
BAE
BAF
BCA
BCD
BCE
BCF
BDA
BDC
BDE
BDF
BEA
BEC
BED
BEF
BFA
BFC
BFD
BFE
CAB
CAD
CAE
CAF
CBA
CBD
CBE
CBF
CDA
CDB
CDE
CDF
CEA
CEB
CED
CEF
CFA
CFB
CFD
CFE
DAB
DAC
DAE
DAF
DBA
DBC
DBE
DBF
DCA
DCB
DCE
DCF
DEA
DEB
DEC
DEF
DFA
DFB
DFC
DFE
EAB
EAC
EAD
EAF
EBA
EBC
EBD
EBF
ECA
ECB
ECD
ECF
EDA
EDB
EDC
EDF
EFA
EFB
EFC
EFD
FAB
FAC
FAD
FAE
FBA
FBC
FBD
FBE
FCA
FCB
FCD
FCE
FDA
FDB
FDC
FDE
FEA
FEB
FEC
FED
Previous
Next Post »