Wieze babilonskie.Pomocy!

0

Mam do napisania wazny projekt,jednakze nie mam kompletnie pomyslu.Bardzo prosze o pomoc, jakis koncept.Oto on:

Wieże babilońskie
Starożytni Babilończycy bawili się konstruując wieże z klocków prostopadłościennych - klocek można położyć na innym tylko jeśli jego podstawa jest mniejsza w każdym kierunku od podstawy dolnego bloku. Zakładając że wymiary bloków to liczby naturalne mniejsze od 100, a liczba bloków to co najwyżej 30, napisz program który wylicza jaką najwyższą wieżę można zbudować używając danych bloków.

Z gory dziekuje.

0

no ja nie wiem, ale to bedzie
99x99x99 <- najwiekszy blok mniejszy od 100 i potem kazdy od niego o 1 mniejszy i tak w petli 30 razy bo 30 bloków, czyli wysokość 99+98+...+69 =99!-(99-30)!
moze o to ci szło ?

0

Wymiary blokow dostaje sie zrandomizowane.kazdy blok ma wiec 3 mozliwe podstawy, zatem mozna go ulozyc na 3 sposoby.czy sprawdzac wszytskie mozliwe ustawienia?jest ich bardzo duzo 3do potegi 30.straszliwa zlozonosc.problem w tym ze ja nie moge skorzystac z takiego rozwiazania..:(

0

ło fajno :D, podoba mi sie zadanko ale nie wiem jak je rozwiazać.
Może wpisać to w tabele 30x3 i posortować odpowiednio w kazdym bloku od najmniejszego, a potem wszystkie bloki miedzy sobą po najmniejszej krawędzi.

//Pomiń to na zielono, tylko wcześniejsze przemyślenie
<font color="green">A następnie budować wieżę od góry to znaczy próbować najmniejszą płaszczyzne stawiać na troche wiekszej, w ten sposób nie bedziesz musiał przeszukać wszystkich możliwości, chyba
nie wiem to tylko pomysł, niestety czasu nie mam na zgłębianie go </span>

Zacząć od najwiekszego:
1-wziąć 2 najmniejsze boki z N bloku
2-sprawdzić czy 2 najmniejsze boki z bloku N-1 mieszczą sie w N
jesli tak to 2. tylko N := N-1
jesli nie to do 1. i wziaść wieksze boki i przejsc do 2

troche to uproszczone i nie sprawdzone ale może coś podpowie, jeszcze nie wiem jak błąd wyżucić gdy niebędzie mozna postawić jednego bloku na drógim w żaden sposób

0

dziki tylko co to oznacza najnmniejszy?bo moge wybracnajmniejszy, ktory bedzie najbardziej prostokatny, natomiast pozostalem beda bardzo waskie, prostokatne, i nic w niego nie wstawie.poza tym po ulozeniu takiej wiezy moze sie okazac ze nie wykorzystalem jednego klocka, ktory bedzie wyzszy od czalej wiezy,albo 2 klockow ktore razem tworza najwieksza wierze,....

0

a bo ja myślałem ze trzeba użyć wszystkich klocków, a jak sie nie da to błąd,hmm w takim razie to też nie wiem, ale może:

posortowac w blokach od najwiekszego;
bloki wszystkie posotrowac od najwiekszego;
w pierwszym bloku(max),2 mniejsze krawędzie wziąć za podstawe;
teraz spróbować nastepnego w tablicy postawić na nim;
jesli nie to pod nim;
jesli też nie to obrócić go tak aby max i min krawedz była podstawą;
i wpisać go "gdzieś" w tabele zgodnie z najwiekszym bokiem obecnej podstawy(tak żeby dalej tabela była poukładana);
i wziaść następnego w tabeli i tak w kółko moze zadziała :P

sam nie wiem, to tylko pomysł może ci coś nasunie,hehe fajnie było by zobaczyć działający już kod

0

wymyslilem cos.tworze macierz 30 na 30 zero-jedynkowa.1 w macierzy oznacza iz dany klocek mozna polozyc na innym, 0 ze nie.teraz problem to napisanie rekurencji ktora by to wyliczala(wyliczala najdluzsza droge w grafie./musi to byc cos w rodzaju:
procedure petla(k,n)
begin
if macierz[k,n]=0
THEN macierz[K,N-1]
if macierz[k,n]=1
then begin
wysokosc:= wysokosc+....
macierz[k,n-1];
o:=n;
macierz[o,n];
end;

oczywiscie to zla rekurencja, ale jakos mam klopoty z wymysleniem poprawnej.z gory dziekuje za pomoc.
Pozdrawiam
Sebastian(nervous)

1 użytkowników online, w tym zalogowanych: 0, gości: 1