c/c++ programozási kérdés.
Az egyetemen kaptam egy kötelező programot, de kifogott rajtam, vagy csak nem értem a kérdést...
De ez már mind1, mert lejárt a határidő...
De érdekelne a hiba oka...
a feladat:
Kód:
Egy raktárból konténereket kell elszállítani kamionokkal. A konténerek egy sorban egymás után helyezkednek el.
Minden konténer súlyát ismerjük, ezek sorrendben s1; s2; : : : ; sn. Összesen k kamion használható a szállításra.
Minden kamionra csak a sorban egymást követo konténerek pakolhatók. Azt szeretnék elérni, hogy a leheto
legegyenletesebb legyen a kamionok terhelése, ami azt jelenti, hogy a legkevésbé terhelt kamion terhelése a leheto
legnagyobb legyen. A kamionok súlykapacitása legalább akkora, hogy mindegyik biztosan elbírja a rárakandó
konténerek súlyát. Kikötés továbbá, hogy minden kamionra legalább egy konténert kell rakni.
Írjon olyan programot, amely kiszámít egy legegyenletesebb pakolást!
Bemeneti specifikáció
A be.txt szöveges állomány elso sora két egész számot tartalmaz, az elso szám n (10 <= n <= 10000) a konténerek
száma, a második szám k (3 <= k <= 100; k <= n) a kamionok száma. A második sor pontosan n pozitív egész
számot tartalmaz, a konténerek súlyait. Az i-edik szám a sorban i-edik konténer súlya, ami nem nagyobb, mint
10000.
Kimeneti specifikáció
A ki.txt szöveges állomány elso sorába egyetlen számot, a legegyenletesebb terhelésre vonatkozó minimálisan
terhelt kamion terhelését kell írni! A második sor pontosan k számot tartalmazzon. Az i-edik szám annak a
konténernek a sorszáma legyen, amelyiktol kezdodo konténereket az i-edik kamionra kell pakolni. Több megoldás
esetén bármelyik megadható.
Példa bemenet és kimenet
be.txt
12 4
4 6 1 5 1 4 4 1 4 2 7 3
ki.txt
10
1 4 7 11
Idolimit: 0.8 mp
Memórialimit: 32 Mb
A forráskódom, amit erre írtam:
Kód:
#include <iostream>
#include <fstream>
using namespace std;
int main(){
ifstream inp("be.txt");
ofstream out("ki.txt");
int kontener,kamion,i,ossztomeg,l;
inp>>kontener;
int tomegek[kontener-1];
inp>>kamion;
int rakomany[kamion-1],u;
u=1;
ossztomeg=0;
for (i=0;i<kontener;i++){
inp>>tomegek[i];
}
for(i=0;i<kontener;i++){
ossztomeg=ossztomeg+tomegek[i];
}
float atlag;
atlag=float(ossztomeg)/float(kamion);
int fuvar[kamion-1],tempszumtomeg,w,t,p[kamion-1],o;
w=0;
o=0;
rakomany[0]=1;
for (t=0;t<kamion-1;t++){
for (tempszumtomeg=0;tempszumtomeg<atlag+1;tempszumtomeg+=tomegek[w]){
w++;
}
p[o]=tempszumtomeg-tomegek[w];
o++;
w--;
rakomany[u]=w+2;
u++;
}
int q=kamion-1;
p[kamion-1]=-1;
for (i=rakomany[kamion-1];i<kontener;i++){
p[kamion-1]=p[kamion-1]+rakomany[q];q--;
}
for(i=0;i<kamion-1;i++){
int j,k;
j=p[i];
k=p[i+1];
if (j<k){l=j;}
else{l=k;}
}
out<<l<<" \n";
for(i=0;i<kamion;i++){out<<rakomany[i]<<" ";}
inp.close();
out.close();
}
A példában megadott feladatot teljesíti, de beadáskor 0 pontos lett, mivel elméletileg nem megfelelő a megoldás, amit ad.
Ha valaki tudja, mit szúrtam el az segíthetne