Portál AbcLinuxu, 24. dubna 2024 12:41


Dotaz: Java uloha

14.2.2012 16:36 Lupajz
Java uloha
Přečteno: 416×
Odpovědět | Admin
mám zadanie : Mám presne 10 bitové číslo v dvojkovej sústave. Musí obsahovať 4x 1 a 6x 0. Vypíšte všetky kombinácie takéhoto čísla. Nuly musia byť viditeľné z ľavej strany. Príklady : 1111000000 0111100000 0100000111 0011001100

Ako na to ? V Jave robím asi polroka :P Najlepšie by to bolo cez pole ale potom sa nejako strácam v algoritme na zamieňanie čísel :P Nejaký help ? :)

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

14.2.2012 17:15 Radovan
Rozbalit Rozbalit vše Re: Java uloha
Odpovědět | | Sbalit | Link | Blokovat | Admin
10 bitů je pouhých 1024 kombinací, příliš málo na to aby stálo za to vymýšlet nějaký "geniální" algoritmus. Takže bych si udělal smyčku která pojede od 0 do 1023, a u každého čísla bych spočítal počet jedniček. Pokud bude právě 6, číslo se vypíše.
14.2.2012 19:36 el karlos
Rozbalit Rozbalit vše Re: Java uloha
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud je tohle úloha po půl roce tak nepředpokládám, že bude rozšířena. Čtyři for v sobě udržující pozici jedničky a jeden na výpis bude stačit. A někde se možná objeví i if.
14.2.2012 19:49 l4m4
Rozbalit Rozbalit vše Re: Java uloha
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jednoduchý a efektivní algoritmus je zde

http://en.wikipedia.org/wiki/Combinatorial_number_system#Applications

ale pokud to budeš muset někde i vysvětlit, je na to lepší přijít sám...
15.2.2012 10:40 kuka
Rozbalit Rozbalit vše Re: Java uloha
Odpovědět | | Sbalit | Link | Blokovat | Admin
Napr. trivialni implementace procvicujici rekurzi. Odpovidajici main by sis po pul roce programovani v jave mohl napsat sam:-)
private static void digitSet(boolean isOne, int pos, int oneCnt, char chArr[]) {
	chArr[pos] = (isOne ? '1' : '0');
	if (pos == chArr.length - 1) {
		if (oneCnt == 4) {
			System.out.println(String.valueOf(chArr));
		}
		return;
	}
	digitSet(false, pos + 1, oneCnt, chArr);
	if (oneCnt < 4) {
		digitSet(true, pos + 1, oneCnt + 1, chArr);
	}
}

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.