od misko sz » 31. 1. 2008 16:53
Ahoj, ja som mal tiez krvnu banku cize mozem napisat, ako to cca islo.
Zadanie:
Mame nejake typy krvi. Kazda krv je bud RH+ alebo RH- a nezavisle na tom este moze byt 0, A, B alebo AB (cize dokopy 8 typov krvi).
My sme nemocnica a na sklade mame dany pocet konzerv z kazdeho typu krvi (to bolo treba nacitat zo suboru). Tiez mame dva druhy pacientov:
- - kritickych (ktori zomru ak im netransplantujeme krv)
- nekritickych (to su ti ostatni)
(Pocty pacientov aj s ich skupinami znovu bolo treba nacitat zo suboru.)
Ulohou je transplantovat krv podla nasledujucich pravidiel:
i) Najprv sa transplantuje krv kritickym pacientom:
- - treba ich zachranit najviac ako sa da
- co najviac z nich ma dostat rovnaky typ krvi, aku maju
- ak inac nejde, moze sa "miesat krv" tak, ze 0 moze dostat kazdy (0 je univerzalny darca) a AB moze prijat hocijaku krv
(AB je univerzalny prijemca), pricom ale RH faktor musi byt zachovany.
ii) Potom sa transplantuje krv nekritickym:
- - zase treba transplantovat najviac, ako ide
- pacient moze dostat len rovnaku krv, aku ma (nemoze sa "miesat")
Riesenie:
Ta druha cast bola lahsia. Po prvej casti nam zostali nejake krvne konzervy, a kedze nemozme miesat krv, tak transplantujeme najviac krvi, ako sa da.
Napr. ak na sklade mame 4 konzervy A+ a mame 5 pacientov so skupinou A+, tak urobime transfuziu styrom. (Ak by bolo konzerv viac ako pacientov, "transfuzovali" by sme vsetkym pacientom a nejake konzervy by zostali).
Ta prva cast je na prvy pohlad zlozita, ale slo ju relativne jednoducho riesit. Najprv sa da vsimnut si, ze medzi RH+ a RH- nejde miesat,
cize akoby sme mali 2 rovnake navzajom nezavisle problemy len so skupinami 0, A, B a AB. No a riesenie vyzera tak, ze transplantujeme
co najviac krvi v tomto poradi (nezavisle pre RH+ a RH-):
Kód: Vybrat vše
[konzerva] -> [pacient]
// vsetku AB dame AB, pretoze ju aj tak nikto iny nemoze dostat
AB -> AB
// co najviac B dame B, ak nejaka este zvysi, mozme ju dat ABcku
B -> B
B -> AB
// co najviac A dame A, ak nejaka este zvysi, mozme ju dat ABcku
A -> A
A -> AB
// co najviac 0 dame 0, ak este zvysi, postupne ju mozme dat ostatnym
0 -> 0
0 -> A
0 -> B
0 -> AB
Nejakym dokazom na styl diskretky ide ukazat, ze ked to spravime takto, splnime vsetky podmienky zo zadania, ale Kryl to odo mna nechcel. Takze tak, snad to niekomu pomoze.
Ahoj, ja som mal tiez krvnu banku cize mozem napisat, ako to cca islo.
[line][/line]
[u][b]Zadanie[/b][/u]:
Mame nejake typy krvi. Kazda krv je bud RH+ alebo RH- a nezavisle na tom este moze byt 0, A, B alebo AB (cize dokopy 8 typov krvi).
My sme nemocnica a na sklade mame dany pocet konzerv z kazdeho typu krvi (to bolo treba nacitat zo suboru). Tiez mame dva druhy pacientov:
[list]- kritickych (ktori zomru ak im netransplantujeme krv)
- nekritickych (to su ti ostatni)[/list]
(Pocty pacientov aj s ich skupinami znovu bolo treba nacitat zo suboru.)
Ulohou je transplantovat krv podla nasledujucich pravidiel:
i) Najprv sa transplantuje krv kritickym pacientom:
[list] - treba ich zachranit najviac ako sa da
- co najviac z nich ma dostat rovnaky typ krvi, aku maju
- ak inac nejde, moze sa "miesat krv" tak, ze 0 moze dostat kazdy (0 je univerzalny darca) a AB moze prijat hocijaku krv
(AB je univerzalny prijemca), pricom ale RH faktor musi byt zachovany.[/list]
ii) Potom sa transplantuje krv nekritickym:
[list] - zase treba transplantovat najviac, ako ide
- pacient moze dostat len rovnaku krv, aku ma (nemoze sa "miesat")[/list]
[line][/line]
[u][b]Riesenie[/b][/u]:
Ta druha cast bola lahsia. Po prvej casti nam zostali nejake krvne konzervy, a kedze nemozme miesat krv, tak transplantujeme najviac krvi, ako sa da.
Napr. ak na sklade mame 4 konzervy A+ a mame 5 pacientov so skupinou A+, tak urobime transfuziu styrom. (Ak by bolo konzerv viac ako pacientov, "transfuzovali" by sme vsetkym pacientom a nejake konzervy by zostali).
Ta prva cast je na prvy pohlad zlozita, ale slo ju relativne jednoducho riesit. Najprv sa da vsimnut si, ze medzi RH+ a RH- nejde miesat,
cize akoby sme mali 2 rovnake navzajom nezavisle problemy len so skupinami 0, A, B a AB. No a riesenie vyzera tak, ze transplantujeme
co najviac krvi v tomto poradi (nezavisle pre RH+ a RH-):
[code][konzerva] -> [pacient]
// vsetku AB dame AB, pretoze ju aj tak nikto iny nemoze dostat
AB -> AB
// co najviac B dame B, ak nejaka este zvysi, mozme ju dat ABcku
B -> B
B -> AB
// co najviac A dame A, ak nejaka este zvysi, mozme ju dat ABcku
A -> A
A -> AB
// co najviac 0 dame 0, ak este zvysi, postupne ju mozme dat ostatnym
0 -> 0
0 -> A
0 -> B
0 -> AB
[/code]
Nejakym dokazom na styl diskretky ide ukazat, ze ked to spravime takto, splnime vsetky podmienky zo zadania, ale Kryl to odo mna nechcel. Takze tak, snad to niekomu pomoze.