Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



permutace

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: permutace

Autor: Maaartin ♂

13:22:50 20.08.2012

pfranz napsal/a

Pekny den. Udelal jsem si pri opakovani takovy jednoduchy program pro vypis vsech ciselnych permutaci s opakovanim. Bohuzel pro cisla s vetsim poctem permutaci program vypisuje chybova hlaseni. Chtel bych se tedy zeptat jak muj algoritmus zlepsit nebo dokonce uplne predelat. Prikladam kod. Diky moc. Chyboba hlaseni vypisuje pri n = 6;



Predelat. Mas to rekurzivni, a to tak ze hodne moc. Dokazal bych si predstavit ze rekurze kdy pouzijes n volani pro pole dylky n tady muze mit smysl, ale ty delas rekurzivne uplne vsecko. Muzes zvetsit velikost stacku ale to nema smysl, stejne to jednou zdechne a to dost brzo.

Tvuj prg dela pocitani do n**n v soustave o bazi n, tady pro rekurzi nevidim vubec zadny pouziti.

Citovat příspěvek

 

permutace

Autor: pfranz ♂

14:16:19 19.08.2012

Pekny den. Udelal jsem si pri opakovani takovy jednoduchy program pro vypis vsech ciselnych permutaci s opakovanim. Bohuzel pro cisla s vetsim poctem permutaci program vypisuje chybova hlaseni. Chtel bych se tedy zeptat jak muj algoritmus zlepsit nebo dokonce uplne predelat. Prikladam kod. Diky moc. Chyboba hlaseni vypisuje pri n = 6;

[code]
package permutace;

public class Permutace {

public static int n = 3;
public static int i = 0;
public static int[] pole = new int[n];

public static void perm() {
if (i < n) {
for (int j = 0; j < n; j++) {
System.out.print(pole[j] + " ");
}
System.out.println();
if (pole[i] != n) {
pole[i]++;
} else {
pole[i] = 1;
rek();
}
perm();
}
}

public static void rek() {
i++;
if (i < n) {
if (pole[i] == n) {
pole[i] = 1;
rek();
} else {
pole[i]++;
i = 0;
perm();
}
}
}

public static void main(String[] args) {
for (int j = 0; j < n; j++) {
pole[j] = 1;
}
perm();
}
}
[/code]

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: