Diskuze: MSSQL - jak vrátit všechny možné kombinace řádků s cenou
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, tohle je hrozně pěkná úloha na algorizmizaci. Podobný problém je třeba u automatu na vrácení mincí.
Zadání není úplné.
Tyto faktory ovlivní výslednou složitost.
Za předpokladu, že použiju každou položku maximálně jednou a každá položka bude mít unikátní cenu, bych postupoval takto:
Vezmi položku s nejvyšší možnou cenou menší, než je výsledná
suma.
Najdi další nejvyšší možnou položku tak, aby součet byl menší/roven
výsledné sumě.
Opakuj, dokud nedojdou položky, nebo nezískáš sumu, nebo nepřetečeš.
V případě přetečení víš, že tohle je špatná cesta a musíš odebrat
poslední vybranou položku a najít další vhodnou.
Tohle je hodně hrubý návrh algoritmu. Můžou se v něm vyskytovat chyby. Netestoval jsem to, je to pouze vymyšlený z hlavy.
mozes si to na zaciatok zjednodusit
... pre 2 polozky:
SELECT a.id, b.id
from tabulka as a, tabulka as b
where
a.cena<500 and
b.cena<500 and
a.cena+b.cena= 500
order by a.cena
pre 3 polozky:
SELECT a.id, b.id, c.id
from tabulka as a, tabulka as b, tabulka as c
where
a.cena<500 and
b.cena<500 and
c.cena<500 and
a.cena+b.cena+c.cena= 500
order by a.cena
Zobrazeno 4 zpráv z 4.