0-1 problém batohu – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

 0-1 problém batohu – Pascal – Fórum – Programujte.com 0-1 problém batohu – Pascal – Fórum – Programujte.com

 

pietro620
Návštěvník
22. 1. 2011   #1
-
0
-

Naprogramujte 0-1 batoh. Definícia. 0-1 problém batohu.
Nech je daných n prirodzených čísel cj, a prir. číslo K. Existuje S ⊂ {1,...,n} taká, že
Σ cj = K ?
jεS

 

program problem;
uses crt;
var cj:array [1..100] of integer;

k, sucet,n,i:integer;



begin
clrscr;
randomize;
sucet:=0;
writeln('zadaj prirodzene cislo k:');
readln(k);
writeln('zadaj pocet prvkov:');
readln(n);
writeln('zadaj prvky pola:');
for i:=1 to n do
begin
cj[i]:=random(100);
write(cj[i],' ');
writeln;
end;

for i:=1 to n do
sucet:=sucet+cj[i];
writeln('sucet je:', sucet);

if (k>=sucet) then
writeln('existuje podmnozina')
else writeln('neexistuje podmnozina');
readln;
end.

Prosim Vas pomozte mi co mam zle.

Nahlásit jako SPAM
IP: 193.87.94.–
Krychlik
~ Anonymní uživatel
195 příspěvků
23. 1. 2011   #2
-
0
-

Mas zle to, ze ti to vubec nic nedela. Treba zacni vyhozenim toho randomu. Potom by bylo dobre napsat ten algoritmus a vlozit ho tam. Pak se muzem bavit o tom co je zle.

Nahlásit jako SPAM
IP: 78.128.199.–
pietro620
Návštěvník
3. 2. 2011   #3
-
0
-

Naprogramujte 0-1 batoh. Definícia. 0-1 problém batohu. Opravil som to. Prosim Vas ak bude nieco zle tak mi opravte.

 

program Batoh;
uses crt;
type predmet = record
vaha : integer;
vbatohu : boolean;
end;
var s, vaha, soucet : integer;
n, j : byte;
predmety : array[1..20] of predmet;

function Iterace(level, maxlevel, hranice : byte) : boolean;
var i : byte;
check : boolean;
begin
check := false;
if (level <= maxlevel) and (hranice <= 20) then
begin
i := hranice;
while (check = false) and (i<=20) do
begin
soucet := soucet + predmety[i].vaha;
predmety[i].vbatohu := true;
if (soucet = s) then
check := true
else if (soucet < s) and (level < maxlevel) then
check := Iterace(level+1, maxlevel, i+1);
if (check = false) then
begin
soucet := soucet - predmety[i].vaha;
predmety[i].vbatohu := false;
i := i + 1;
end;
end;
end;
Iterace := check;
end;

begin
readln(s);
read(n);
for j:=1 to n do
begin
read(vaha);
predmety[j].vaha := vaha;
predmety[j].vbatohu := false;
end;
soucet := 0;

j := 1;
while (j <= 20) and (Iterace(1,j,1) = false) do
j := j + 1;
if (j=21) then
write('NELZE')
else
begin
for j:=1 to n do
if (predmety[j].vbatohu = true) then
write(predmety[j].vaha, ' ');
end;
readkey;
end.

Nahlásit jako SPAM
IP: 193.87.94.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

Podobná vlákna

Problém s if else — založil Mortimer

Problém s i++ — založil Chazz

Problem — založil roonill

Problem — založil jurec

Problem s &lt; a &gt; — založil 7raul

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý