Giải giùm mình chương trình free pascal với
Có N gói hàng với trọng lượng P1, P2, …, PN. Người ta cần đóng những gói hàng này vào những chiếc hộp cứng để gửi, biết rằng chi phí vận chuyển chỉ tính phí đồng giá theo từng hộp và nhận những hộp hàng trọng lượng không quá M thỏa mãn Pi ≤ M (i=1,2, …,N).
Yêu cầu: Em hãy lập trình tính số hộp để đóng n gói hàng trên với chi phí ít nhất.
program ct;
uses crt;
var P:array[1..1000] of integer;
i,n,M,h:integer;
begin clrscr;
write(‘Nhap so goi hang: ‘); readln(n);
for i:=1 to n do
begin
write(‘Nhap trong luong goi hang thu ‘,i,’: ‘); readln(P[i]);
end;
write(‘Nhap trong luong M thoa man: ‘); readln(M);
h:=0;
for i:=1 to n do
if P[i]<=M then h:=h+1;
writeln(‘Can ‘,h,’ hop de dong goi ‘,n,’ goi hang tren voi chi phi it nhat’);
readln;
end.
Học tốt!
uses crt;
var a,l,t,f:array[0..100000]of longint; i,n,j,kt,m,x,dem:longint;
begin
clrscr;
write(‘n=’);readln(n);
for i:=1 to n do
begin
write(‘P[‘,i,’]=’);readln(a[i]);
end;
write(‘m=’);readln(m);
l[i]:=a[i]; t[i]:=i;
for j:=1 to i-1 do if a[j]+l[i]<=10 then dem:=1;
for i:=n-1 downto 1 do
begin
for j:=i+1 to n do
if (a[i]<=m)and(a[i]+l[j]<=m)and(l[i]<a[i]+l[j])and(f[j]=0) then
begin
f[t[i]]:=0; l[i]:=l[j]+a[i]; t[i]:=j; f[j]:=1;
end;
kt:=0;
if l[i]=0 then begin l[i]:=a[i]; t[i]:=i; end;
for j:=1 to i-1 do if a[j]+l[i]<=10 then kt:=1;
if kt=0 then inc(dem);
end;
writeln(dem);
readln
end.