Unit Unit1; interface


Скачать 32.83 Kb.
НазваниеUnit Unit1; interface
Дата публикации19.06.2013
Размер32.83 Kb.
ТипДокументы
Приложение 1

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

Const NMax = 100;

type

Thash = array[0..1000] of longint;

TC = array[1..NMax] of longint;

TW = array[0..NMax] of longint;

TT = array[0..NMax,0..NMax] of Integer;

Tbit = array[0..NMax] of byte;

TForm1 = class(TForm)

ListBox1: TListBox;

Button_Save: TButton;

Label_FileNameOut: TLabel;

SaveDialog_Out: TSaveDialog;

procedure FormCreate(Sender: TObject);

procedure Button_SaveClick(Sender: TObject);

private

{ Private declarations }

Продолжение приложения 1

public

{ Public declarations }

end;

var

Form1: TForm1;

i,j,k,p:Integer;

N,M:Integer; {количество разновидностей элементов и грузоподъемность}

sum:Integer;

b:Boolean;

total:longint; {набранная масса из элементов}

cost:longint;

max:Integer;

hash : Thash;

C : TC;

W : TW;

T : TT;

bit : Tbit;

kbit : Tbit;

implementation

{$R *.dfm}

Продолжение приложения 1

procedure TForm1.FormCreate(Sender: TObject);

begin

ListBox1.Clear;

AssignFile(input,'DATA.txt');

Reset(input);

readln(N,M);

for i:=1 to N do begin

readln(W[i],C[i]);

bit[i]:=0; { бит вхождения: esli=1, то входит, иначе нет }

kbit[i]:=0; количество вхождений элемента}

hash[C[i]]:=i; { связывает на прямую стоимость порядковым номером}

end;

hash[0]:=0;

closefile(input);

T[0,0]:=0;

for j:=1 to M do T[0,j]:=0;

for i:=1 to N do T[i,0]:=0; {сортировка для упрощения поиска}

for j:=1 to N-1 do begin

for i:=1 to N-j do begin

if C[i]>C[i+1] then begin

p:=W[i]; k:=C[i];

Продолжение приложения 1

^ W[i]:=W[i+1]; C[i]:=C[i+1];

W[i+1]:=p; C[i+1]:=k;

end;

end;

end;

for k:=1 to N do begin

for i:=1 to N do begin

for j:=1 to M do begin

if j>=W[i] then begin

max:=0;

for p:=1 to k do

if j>=W[p] then

if (T[i-1,j-W[p]]+C[p])>max then max := T[i-1,j-W[p]]+C[p];

if T[i-1,j] >= max then T[i,j]:=T[i-1,j]

else T[i,j]:=max;

end else T[i,j]:=T[i-1,j];

end;

end;

end;

b:=true;

W[0]:=0;

Продолжение приложения 1

total:=0;

while b=true do begin

for i:=N downto 1 do begin

if total+W[hash[T[i,M]-T[i-1,M]]] >= M then begin

b:=false;

break;

end else begin

total:=total+W[hash[T[i,M]-T[i-1,M]]];

bit[hash[T[i,M]-T[i-1,M]]]:=1;

inc(kbit[hash[T[i,M]-T[i-1,M]]]);

end;

end;

if b = false then break;

end;

{вывод результатов}

ListBox1.Items.Append('Исходный набор предметов:');

ListBox1.Items.Append('');

for i:=1 to N do begin

ListBox1.Items.Append('Товар № ' + IntToStr(i));

ListBox1.Items.Append(' вес: =' + IntToStr(W[i]) + ', цена: =' + IntToStr(C[i]));

Продолжение приложения 1

end;

ListBox1.Items.Append('');

ListBox1.Items.Append('Максимальный вес: ' + IntToStr(M));

ListBox1.Items.Append('');

ListBox1.Items.Append('Результат');

ListBox1.Items.Append('-------------------------------------------------');

total:=0;

cost:=0;

ListBox1.Items.Append('');

k:=0;

ListBox1.Items.Append('Итоговый оптимальный набор:');

ListBox1.Items.Append('');

for i:=1 to N do begin

if bit[i]=1 then begin

ListBox1.Items.Append('Товар № ' + IntToStr(i));

ListBox1.Items.Append(' вес: ' + IntToStr(W[i]) + ', стоимость: ' + IntToStr(C[i]));

ListBox1.Items.Append(' - ' + IntToStr(kbit[i]) + ' шт.');

total:=total+W[i]*kbit[i];

cost:=cost+C[i]*kbit[i];

end;

Продолжение приложения 1

end;

ListBox1.Items.Append('');

ListBox1.Items.Append('Максимальный вес набора: ' + IntToStr(total));

ListBox1.Items.Append('');

ListBox1.Items.Append('Максимальная цена набора: ' + IntToStr(cost));

end;

procedure TForm1.Button_SaveClick(Sender: TObject);

begin

Form1.Label_FileNameOut.Caption:= 'Out.txt';

Form1.ListBox1.Items.SaveToFile('Out.txt');

end;

end.

Похожие:

Unit Unit1; interface iconWords from the text of Unit 6

Unit Unit1; interface iconUnit 8 Linear relationships (3)

Unit Unit1; interface iconUnit 3 Class relationships (2)

Unit Unit1; interface iconUnit 1 Spatial relationships

Unit Unit1; interface iconUnit 10.   Home,   sweethome

Unit Unit1; interface iconUnit 10. Challenges of the Modern Sociology

Unit Unit1; interface iconUnit 7 Linear relationships (2) Process

Unit Unit1; interface iconUnit 2 Class relationships (1) Classification

Unit Unit1; interface iconUnit 4 Organizing texts (1) General-specific

Unit Unit1; interface iconUnit Ragtime исполнители негритянских песен покидать, оставлять, отказываться от чего-либо

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2020
контакты
userdocs.ru
Главная страница