benzersiz her basamağı ile 9 basamaklı sayıları üretmek için çalışıyorum. vb Örneğin, 123456789, 132456789, 987654321 için .... Ben bu soruyu çözmek zorunda böyle kazandığını düşünüyoruz çünkü ben özyineleme ile bu soruyu etiketli nedendir ama nasıl emin değilim JavaBen <strong>1 hiçbir tekrarlar tam bir kez kullanılan</strong> 9'a her rakam ile 9 haneli sayıların <strong>tüm</strong> permütasyon üretmek çalışıyorum Java
oProgram, int dizilerinin bir listesini döndürmelidir.
List<int[]> list = new ArrayList<int[]>();
int[] values = {1,2,3,4,5,6,7,8,9};
int count=0;
int count2=0;
int count3=1;
while(count2<9*8*7*6*5*4*3*2) {
for(int i =1;i<values.length-1;i++) {
if (count<8*7*6*5*4*3*2) {
Integer toMove = values[i];
values[i]=values[i+1];
values[i+1]=toMove;
count++;
} else if (count>=8*7*6*5*4*3*2&&count3<9) {
values[0]=1;
values[1]=2;
values[2]=3;
values[3]=4;
values[4]=5;
values[5]=6;
values[6]=7;
values[7]=8;
values[8]=9;
Integer toMove = values[0];
values[0]=values[count3];
values[count3]=toMove;
count=1;
count3++;
i=0;
}
count2++;
list.add(values);
}
Sen özyineleme ile bu soruyu etiketledi aradığını, ancak senin örneğin yinelemeli bir algoritma değildir. Olması gerekiyor mu? Ve kaç yinelemeyi istediğinizden emin misiniz (9!)? – KevinO
Permütasyonlar oluşturmak ister misiniz? Vikipedi bunu yapmak için bazı algoritmalar açıklar. https://en.wikipedia.org/wiki/Permutation#Generation_in_lexicographic_order – SpiderPig
Tüm permütasyonları ya da 0-9'luk birer birer birer birer görünen 9 rakamı bir avuç almaya çalışıyor musunuz? İkincisi ise, sadece bir rakam dizisi oluşturun ve karıştırın. – pjs