int modStanice_MaximálníHmotnost; // celková hmotnost nákladu, kter∞ màºe kamion vézt
int modStanice_ObsazenáHmotnost; // jiº obsazená hmotnost v kamionu
int modStanice_PoƒetZboºí; // poƒet zboºí, které je k dispozici
int *modStanice_Zboºí; // pole zboºí, které je k dispozici - hodnoty prvkà urƒují hmotnosti jednotliv∞ch kusà zboºí
int modStanice_DostupnáHmotnost; // dostupná hmotnost v kamionu (= modStanice_MaximálníHmotnost - modStanice_ObsazenáHmotnost) ... ukládáno v prom╪nné pro urychlení v∞poƒtu
int *modStanice_Kamion; // pole zboºí nakládaného do kamionu - jednotlivé prvky jsou po²adová ƒísla naloºen∞ch kusà zboºí
int modStanice_NaloºenáHmotnost; // celková hmotnost nákladu, kter∞ je práv╪ naloºen∞
int modStanice_Θroveσ; // úroveσ zano²ení v backtrackingu (kolik zboºí je práv╪ naloºeno)
int *modStanice_Nejlepτíⁿeτení_Kamion; // kopie pole Kamion, které je dosud nejlepτím nalezen∞m ²eτením
int modStanice_Nejlepτíⁿeτení_NaloºenáHmotnost; // celková hmotnost nákladu, kter∞ je dosud nejlepτím nalezen∞m ²eτením
int modStanice_Nejlepτíⁿeτení_Θroveσ; // úroveσ zano²ení v backtrackingu (kolik zboºí je práv╪ naloºeno), která byla aktuální v dob╪ nalezení dosud nejlepτího nalezeného ²eτení
// soukromé funkce
void modStanice_VykresliKamion(void) {
GrKresliP²edm╪ty(46,0,25,120,15,7);
}
void modStanice_VykresliZboºí(int *modStanice_VykreslovanéPole, int modStanice_VykreslovanáΘroveσ) {
int modStanice_VykreslovanáHmotnost, modStanice_JiºVykreslenáHmotnost = 0;
} if(modStanice_MaximálníHmotnost==911) mod_VypiτHláτku("This module created 9/11/2002 - remembrance of 9/11/2001 - God Bless America!", mod_VYPIµHL╡µKU_¼EKEJNAKL╡VESU);
// INFORMACE O MAXIM╡LN╓ HMOTNOSTI N╡KLADU
if(mod_ReºimObrazovky == mod_TEXTOVφ_REªIM) {
mod_VypiτHláτku("Maximální hmotnost nákladu kamionu je "+StrL¼íslo(modStanice_MaximálníHmotnost,-1)+" kg...", mod_VYPIµHL╡µKU_VY¼KEJ);
}
// ZJIµT╖N╓ OBSAZENÉ HMOTNOSTI
mod_VypiτHláτku("Zadejte, kolik kg z této hmotnosti je jiº obsazeno nákladem [0-"+StrL¼íslo(modStanice_MaximálníHmotnost,-1)+"]: ", mod_VYPIµHL╡µKU_NE¼EKEJ);
// nov∞ kandidát na ²eτení byl nalezen, [pokud jiº nelze naloºit ºádné dalτí zboºí nebo pokud jiº po naloºení uvaºovaného zboºí nepàjde naloºit ani poslední ze zboºí (to s nejmenτí hmotností)] a pokud je práv╪ nalezené ²eτení lepτí neº dosud nejlepτí nalezené ²eτení
/* N╡SLEDUJ╓C╓ VERZE Pⁿ╓KAZU SICE PRODLUªUJE DOBU ⁿEµEN╓, JE VµAK N╡ZORN╖Jµ╓:
// nov∞ kandidát na ²eτení byl nalezen, pokud jiº nelze naloºit ºádné dalτí zboºí a pokud je práv╪ nalezené ²eτení lepτí neº dosud nejlepτí nalezené ²eτení
// uloºení nalezeného ²eτení jako dosud nejlepτího (platnost faktu, ºe se jedná o ²eτení dosud nejlepτí, zajiτ£uje uº samotná podmínka ve funkci modStanice_TestNalezeno)
ModulInfo->Popis = "S problémem ²eτen∞m tímto modulem se denn╪ setkávají zam╪stnanci tzv. vyt╪ºovacích stanic. Vyt╪ºovací stanice jsou místa, kam p²ijíºd╪jí ²idiƒi kamionà p²ed tím, neº vyrazí na cestu. V╪tτinou totiº jeτt╪ mají ve svém kamionu n╪jaké volné místo a rádi by jej vyuºili, protoºe vzít n╪jak∞ náklad navíc jim neƒinní velké problémy. Vyt╪ºovací stanice získává od firem bez kamionà zboºí, které pot²ebují n╪kam doruƒit, a následn╪ jím vyt╪ºuje pln╪ neobsazené kamiony, které pak za p²evoz tohoto cizího zboºí dostanou zaplaceno. ⁿeτen∞ problém spoƒívá v tom, ºe vzhledem k ràzn∞m hmotnostem zboºí, které je k dispozici, je t²eba jej navybírat tak, aby vybrané zboºí kamion nep²etíºilo, ale zase aby v n╪m zbylo pokud moºno co nejmén╪ nevyuºité hmotnosti.";