public static void OPTIMBTS(int szint, ref bool[] E, bool[,] R, ref bool van, Raktar raktar, ref bool[] OPT, LancoltLista lista) { int i = -1; while (i < 1) { if (szint == lista.DarabElem(lista) - 1) { ; } i++; if (Ft(szint, R[szint, i], raktar, E)) { if (Fk(szint, R[szint, i], raktar, E, lista)) { E[szint] = R[szint, i]; if (szint == lista.DarabElem(lista) - 1) { if (!van || (Josag(E) > Josag(OPT))) { for (int j = 0; j < E.Length; j++) { OPT[j] = E[j]; } } van = true; } else { OPTIMBTS(szint + 1, ref E, R, ref van, raktar, ref OPT, lista); } } } } }
public void OsszesButorElhelyezeseARaktarban(bool UjraRendezes) { bool van = false; int butorDarabSeged = ButorDarab; int[,] raktarButorokkalseged = raktarButorokkal; bool[,] R = new bool[ButorDarab, 2]; for (int i = 0; i < ButorDarab; i++) { R[i, 0] = true; R[i, 1] = false; } bool[] E = new bool[ButorDarab]; BTSs.BTS(0, ref E, R, ref van, this); if (UjraRendezes) { Console.WriteLine("\n\nBefer-e(true/false) teljes ujrarendezes utan + annak a butornak az adatai"); int i = 0; LancoltLista masikRaktarbaKuldesButorok = new LancoltLista(); foreach (bool item in E) { Console.Write(item + " "); Console.WriteLine(lista.NthElem(i)); if (!item) { masikRaktarbaKuldesButorok.VegereBeszuras(lista.NthElem(i)); } i++; } if (masikRaktarbaKuldesButorok.DarabElem(masikRaktarbaKuldesButorok) != 0) { for (int j = 0; j < masikRaktarbaKuldesButorok.DarabElem(masikRaktarbaKuldesButorok); j++) { lista.KitorolListabol(masikRaktarbaKuldesButorok.NthElem(j).ID, lista); } throw new NincsTobbHelyButornakTeljesRendezesUtanException() { HibaUzenet = "[ERR]Butor(ok)nak nincs hely teljes ujrarendezés után", elemek = masikRaktarbaKuldesButorok }; } } else { Console.WriteLine("\n\nBefer-e(true/false) + annak a butornak az adatai"); for (int i = 0; i < ButorDarab; i++) { Console.Write(E[i] + " "); Console.WriteLine(lista.NthElem(i)); } } }
public void ButorKihozatal(int ID, Raktar raktar) { ButorAlap elem = raktar.lista.IDthElem(ID); int[] UtbanVanIDk = new int[raktar.ButorDarab - 1]; Utbanvan(ref UtbanVanIDk, elem, raktar); LancoltLista kihozottButorokLista = new LancoltLista(); int j = 0; while (j < raktar.ButorDarab && UtbanVanIDk[j] != 0) { kihozottButorokLista.VegereBeszuras(raktar.lista.IDthElem(UtbanVanIDk[j])); raktar.ElemKivetel(UtbanVanIDk[j++]); } raktar.ElemKivetel(ID); raktar.lista.KitorolListabol(ID, raktar.lista); raktar.ButorDarab--; int kihozottDb = kihozottButorokLista.DarabElem(kihozottButorokLista); if (kihozottDb != 0) { bool[] OPT = new bool[kihozottDb]; bool[] E = new bool[kihozottDb]; bool[,] R = new bool[kihozottDb, 2]; for (int i = 0; i < kihozottDb; i++) { R[i, 0] = true; R[i, 1] = false; } bool van = false; OptimBTS.OPTIMBTS(0, ref E, R, ref van, this, ref OPT, kihozottButorokLista); for (int i = 0; i < kihozottDb; i++) { if (OPT[i]) { getHely(kihozottButorokLista.NthElem(i), true); // visszarakas a raktarba OnUjHely(kihozottButorokLista.NthElem(i).ID, kihozottButorokLista.NthElem(i).BalFelsoKoordinata); } else { throw new NincsTobbHelyButornakTeljesRendezesElottException() { HibaUzenet = "[ERR]Egy butornak nem sikerült helyet találni", elem = kihozottButorokLista.NthElem(i) }; } } } }