J'ai le code suivant pour écrire toutes les permutations et les combinaisons dans un fichier, mais il prend beaucoup de temps pour écrire dans un fichier ... S'il vous plaît suggérer un meilleur code qui ont de bonnes performances. Lorsque je donne l'entrée abcdefghijklmnopqrstuvwxyz
et n=5
, il faut environ 5 minutes pour l'exécuter.meilleure performance pour écrire toutes les permutations et la combinaison d'une chaîne d'une longueur paticular dans un fichier
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.text.Collator;
import java.util.Arrays;
import java.util.Locale;
import java.util.Scanner;
public class permutation {
static int c;
static Scanner s=new Scanner(System.in);
static String input =s.nextLine();
int size = s.nextInt();
boolean[] num = new boolean[input.length()];
public void generate(String data) throws Exception {
FileWriter fstream = new FileWriter("D:\\out.txt",true);
BufferedWriter out = new BufferedWriter(fstream);
if (data.length() == size) {
out.newLine();
out.write(data);
System.out.println(data);
c++;
out.close();
return;
}
for (int i = 0; i < input.length(); ++i) {
if (!num[i]) {
num[i] = true;
generate(data + input.charAt(i));
num[i] = false;
}
}
}
public static void main(String[] args) throws Exception {
long startTime = System.currentTimeMillis();
permutation obj = new permutation();
Collator col = Collator.getInstance(new Locale("en", "EN"));
String s = input;
String[] s1= s.split("");
Arrays.sort(s1, col);
String sorted = "";
for (int i = 0; i < s1.length; i++) {
sorted += s1[i];
}
input=sorted;
System.out.println(input);
obj.generate("");
System.out.println();
long endTime = System.currentTimeMillis();
long totalTime = endTime - startTime;
System.out.println(totalTime);
}
}
donnez svp l'entrée comme abcdefghijklmnopqrstuvwxyz et la deuxième entrée comme 5 –
Vous pouvez essayer de déplacer la création du 'FileWriter' et du' BufferedWriter' dans le 'if()'. –
Regardez ici http://stackoverflow.com/questions/5113707/getting-every-possible-permutation-of-a-string-or-combination-including-repeated?rq=1 Cela pourrait aider. – Nurjan