Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Zdravím,
nemáte někdo náhodou vyřešen v jazyku C# problém osmi dam (Cílem je umístit na šachovnici o rozměrech 8x8 polí 8 dam tak, aby se žádné dvě z nich neohrožovaly. Dáma je šachová figura, která může táhnout libovolný počet polí horizontálně, vertikálně nebo diagonálně. Řešením je tedy takové rozmístění figur, kdy žádné dvě nestojí na témž řádku, sloupci nebo na téže diagonále.)? Já si s tím nějak nevím rady...
Děkuji
Offline
↑ vojta01:
V knížce na C a C++ je zdroják v C#??
BTW: Neznáš autora a zda-li to někde seženu v elektronické pododbě?
Offline
↑ f@tom47:
Ne je to samozřejmě v C-čku. Ale určitě to jednoduše předěláš je to podobné. Můžu ti sem dát kód a zítra večer i text k tomu (teď tu knihu nemam u sebe).
http://www.grada.cz/algoritmy-v-jazyku- … p;pro=4075
Offline
↑ gladiator01:
Když to sem teda zítra dáš, budu rád :-)
BTW: Komentáře nejsou na škodu.
Offline
/* OsmDam.c */ /* 8 vzajemne se neohrozujicich dam na sachovnici */ #include <stdio.h> #include <conio.h> int i,k; static int a[8]; static int b[15]; static int c[15]; int x[8]; void Zkus(int i) { int j; for(j=0;j<8;j++) { if (a[j] && b[i+j] && c[i-j+7]) { x[i]=j; a[j]=0; b[i+j]=0; c[i-j+7]=0; if (i<7) Zkus(i+1); else { /* tisk */ for(k=0;k<8;k++) printf("%d ",x[k]); printf("Stiskni lib.klavesu...\n"); getch(); } a[j]=1; b[i+j]=1; c[i-j+7]=1; } } } int main() { for(i=0;i<8;i++) a[i]=1; for(i=0;i<15;i++) { b[i]=1; c[i]=1; } Zkus(0); getch(); return 0; }
Offline
↑ gladiator01:
Jsem to přepsal, ale vypisuje to úplně něco jinýho. Jen nějaký posloupnosi čísel od 0 do 8, či co.
Offline
↑ f@tom47:
A co by to mnělo vypisovat? To jsou jednotlivá řešení.
Kdyby jsi si přečetl ten text tak by jsi zjistil, že do pole x se ukládají čísla řádků a pořadové číslo (pozice umístění v poli) je sloupek.
V céčku je pole od 0, tedy:
1 řešení
sloupek:0 1 2 3 4 5 6 7
řádek: 0 4 7 5 2 6 1 3
Najde to 92 řešení. (z nichž některá jsou symetrická, jak se píše v tom textu)
Můžeš si to vyzkoušet zde: http://www.superhry.cz/games/242/ (0x0 je úplně vlevo nahoře - pozor na to aby jsi počítal od nuly)
Offline
Ahoj,
pokud to chceš v C#, tak tento problém je v knížce C# pro zelenáče od Miroslava Viriuse.
Offline