Java Permütasyon Bulma
Kullanıcının girdiği sayı dizisinin tüm olası permütasyonlarını bulan Java programı.
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Sayıları virgülle ayırarak girin: ");
String input = scanner.nextLine();
int[] numbers = parseInput(input);
List < List < Integer >> permutations = findPermutations(numbers);
System.out.println("Tüm permütasyonlar:");
for (var perm : permutations) {
System.out.println(stringJoin(perm));
}
scanner.close();
}
private static int[] parseInput(String input) {
String[] numberStrings = input.split(",");
int[] numbers = new int[numberStrings.length];
for (int i = 0; i < numberStrings.length; i++) {
numbers[i] = Integer.parseInt(numberStrings[i].trim());
}
return numbers;
}
private static List < List < Integer >> findPermutations(int[] numbers) {
List < List < Integer >> permutations = new ArrayList<>();
List < Integer > currentPerm = new ArrayList<>();
boolean[] used = new boolean[numbers.length];
generatePermutations(numbers, currentPerm, used, permutations);
return permutations;
}
private static void generatePermutations(int[] numbers, List < Integer > currentPerm, boolean[] used,
List < List < Integer >> permutations) {
if (currentPerm.size() == numbers.length) {
permutations.add(new ArrayList <> (currentPerm));
return;
}
for (int i = 0; i < numbers.length; i++) {
if (!used[i]) {
used[i] = true;
currentPerm.add(numbers[i]);
generatePermutations(numbers, currentPerm, used, permutations);
currentPerm.remove(currentPerm.size() - 1);
used[i] = false;
}
}
}
private static String stringJoin(List < Integer > list) {
StringBuilder result = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
result.append(list.get(i));
if (i < list.size() - 1) {
result.append(", ");
}
}
return result.toString();
}
}
Kullanıcıdan sayıları virgülle ayırarak al
System.out.println("Sayıları virgülle ayırarak girin: ");
String input = scanner.nextLine();
Kullanıcı girdisini ayrıştırarak int dizisine dönüştür
int[] numbers = parseInput(input);
Permütasyonları bul ve listeye ekle
List < List < Integer >> permutations = findPermutations(numbers);
Bulunan tüm permütasyonları ekrana yazdır
System.out.println("Tüm permütasyonlar:");
for (var perm : permutations) {
System.out.println(stringJoin(perm));
}
scanner.close();
}
Kullanıcıdan alınan girdiyi virgüllere göre ayrıştıran yardımcı metot
private static int[] parseInput(String input) {
String[] numberStrings = input.split(",");
int[] numbers = new int[numberStrings.length];
for (int i = 0; i < numberStrings.length; i++) {
numbers[i] = Integer.parseInt(numberStrings[i].trim());
}
return numbers;
}
Permütasyonları bulan yardımcı metot
private static List < List < Integer >> findPermutations(int[] numbers) {
List < List < Integer >> permutations = new ArrayList<>();
List < Integer > currentPerm = new ArrayList<>();
boolean[] used = new boolean[numbers.length];
generatePermutations(numbers, currentPerm, used, permutations);
return permutations;
}
Permütasyonları oluşturan yardımcı metot
private static void generatePermutations(int[] numbers, List < Integer > currentPerm, boolean[] used,
List < List < Integer >> permutations) {
// Tüm elemanlar kullanıldıysa, permütasyonu listeye ekle ve dön
if (currentPerm.size() == numbers.length) {
permutations.add(new ArrayList <> (currentPerm));
return;
}
// Permütasyonları oluştur
for (int i = 0; i < numbers.length; i++) {
if (!used[i]) {
used[i] = true;
currentPerm.add(numbers[i]);
generatePermutations(numbers, currentPerm, used, permutations);
currentPerm.remove(currentPerm.size() - 1);
used[i] = false;
}
}
}