unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}uses
Math;procedure TForm1.FormCreate(Sender: TObject);
type
TStuff = record //材料类型
rBody: Integer; //盒身数
rTop: Integer; //盒盖数
rName: string; //材料名称
end;
const
BoxCount = 1950; //盒子数(盒身和盒盖)
Stuff1: TStuff = (rBody: 15; rTop: 7; rName: '甲材料'); //甲材料可以做15个盒身和7个盒盖
Stuff2: TStuff = (rBody: 12; rTop: 16; rName: '乙材料'); //乙材料可以做12个盒身和16个盒盖
var
I, J: Integer;
FirstStuff: TStuff; //首选材料
SecondStuff: TStuff; //次选材料
FirstCount: Integer; //首选材料数
SecondCount: Integer; //次选材料数
begin
FirstCount := 0;
SecondCount := 0;
if Stuff1.rBody + Stuff1.rTop < Stuff2.rBody + Stuff2.rTop then begin
FirstStuff := Stuff2;
SecondStuff := Stuff1;
end else begin
FirstStuff := Stuff1;
SecondStuff := Stuff2;
end;
for I := BoxCount div Max(FirstStuff.rBody, FirstStuff.rTop) downto 0 do
for J := 1 to (I * Max(FirstStuff.rBody, FirstStuff.rTop)) div
Max(SecondStuff.rBody, SecondStuff.rTop) do
if (I * FirstStuff.rBody + J * SecondStuff.rBody = BoxCount) and
(I * FirstStuff.rTop + J * SecondStuff.rTop = BoxCount) then begin
FirstCount := I;
SecondCount := J;
Break;
end;
Memo1.Clear;
Memo1.Lines.Add(Format('FirstStuff.rName: %s', [FirstStuff.rName]));
Memo1.Lines.Add(Format('FirstCount: %d', [FirstCount]));
Memo1.Lines.Add(Format('SecondStuff.rName: %s', [SecondStuff.rName]));
Memo1.Lines.Add(Format('SecondCount: %d', [SecondCount]));
Memo1.Lines.Add('---------------------------------------');
Memo1.Lines.Add(Format('FirstStuff.rBody:%d*FirstCount:%d=%d',
[FirstStuff.rBody, FirstCount, FirstStuff.rBody * FirstCount]));
Memo1.Lines.Add(Format('SecondStuff.rBody:%d*SecondCount:%d=%d',
[SecondStuff.rBody, SecondCount, SecondStuff.rBody * SecondCount]));
Memo1.Lines.Add(Format('Body:%d',
[FirstStuff.rBody * FirstCount + SecondStuff.rBody * SecondCount]));
Memo1.Lines.Add('---------------------------------------'); Memo1.Lines.Add(Format('FirstStuff.rTop:%d*FirstCount:%d=%d',
[FirstStuff.rTop, FirstCount, FirstStuff.rTop * FirstCount]));
Memo1.Lines.Add(Format('SecondStuff.rTop:%d*SecondCount:%d=%d',
[SecondStuff.rTop, SecondCount, SecondStuff.rTop * SecondCount]));
Memo1.Lines.Add(Format('Top:%d',
[FirstStuff.rTop * FirstCount + SecondStuff.rTop * SecondCount]));
Memo1.Lines.Add('---------------------------------------');
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}uses
Math;procedure TForm1.FormCreate(Sender: TObject);
type
TStuff = record //材料类型
rBody: Integer; //盒身数
rTop: Integer; //盒盖数
rName: string; //材料名称
end;
const
BoxCount = 1950; //盒子数(盒身和盒盖)
Stuff1: TStuff = (rBody: 15; rTop: 7; rName: '甲材料'); //甲材料可以做15个盒身和7个盒盖
Stuff2: TStuff = (rBody: 12; rTop: 16; rName: '乙材料'); //乙材料可以做12个盒身和16个盒盖
var
I, J: Integer;
FirstStuff: TStuff; //首选材料
SecondStuff: TStuff; //次选材料
FirstCount: Integer; //首选材料数
SecondCount: Integer; //次选材料数
begin
FirstCount := 0;
SecondCount := 0;
if Stuff1.rBody + Stuff1.rTop < Stuff2.rBody + Stuff2.rTop then begin
FirstStuff := Stuff2;
SecondStuff := Stuff1;
end else begin
FirstStuff := Stuff1;
SecondStuff := Stuff2;
end;
for I := BoxCount div Max(FirstStuff.rBody, FirstStuff.rTop) downto 0 do
for J := 1 to (I * Max(FirstStuff.rBody, FirstStuff.rTop)) div
Max(SecondStuff.rBody, SecondStuff.rTop) do
if (I * FirstStuff.rBody + J * SecondStuff.rBody = BoxCount) and
(I * FirstStuff.rTop + J * SecondStuff.rTop = BoxCount) then begin
FirstCount := I;
SecondCount := J;
Break;
end;
Memo1.Clear;
Memo1.Lines.Add(Format('FirstStuff.rName: %s', [FirstStuff.rName]));
Memo1.Lines.Add(Format('FirstCount: %d', [FirstCount]));
Memo1.Lines.Add(Format('SecondStuff.rName: %s', [SecondStuff.rName]));
Memo1.Lines.Add(Format('SecondCount: %d', [SecondCount]));
Memo1.Lines.Add('---------------------------------------');
Memo1.Lines.Add(Format('FirstStuff.rBody:%d*FirstCount:%d=%d',
[FirstStuff.rBody, FirstCount, FirstStuff.rBody * FirstCount]));
Memo1.Lines.Add(Format('SecondStuff.rBody:%d*SecondCount:%d=%d',
[SecondStuff.rBody, SecondCount, SecondStuff.rBody * SecondCount]));
Memo1.Lines.Add(Format('Body:%d',
[FirstStuff.rBody * FirstCount + SecondStuff.rBody * SecondCount]));
Memo1.Lines.Add('---------------------------------------'); Memo1.Lines.Add(Format('FirstStuff.rTop:%d*FirstCount:%d=%d',
[FirstStuff.rTop, FirstCount, FirstStuff.rTop * FirstCount]));
Memo1.Lines.Add(Format('SecondStuff.rTop:%d*SecondCount:%d=%d',
[SecondStuff.rTop, SecondCount, SecondStuff.rTop * SecondCount]));
Memo1.Lines.Add(Format('Top:%d',
[FirstStuff.rTop * FirstCount + SecondStuff.rTop * SecondCount]));
Memo1.Lines.Add('---------------------------------------');
end;end.
解决方案 »
- 多线程下用ADO访问本地数据库
- rzdbnavigator连接数据库的问题
- MDI窗口问题
- 麻烦介绍几个好的 Delphi 的 Blog (VCL,构架方面)。
- 请各位绿林好汉帮忙解答一下。答对50分。一定践行诺言!
- AdoConnect1+Access数据库,当Access数据库设置密码后就会有报错,Access数据库不设置密码就一切正常---!!!????
- 急,请各问关心一下,高分求救!
- 如何用ADOConnection1连接abc.MDF文件?
- 关于displaywidth?
- 问一个有关Where的奇怪问题
- 他妈的,现在的老鸟在依老卖老,走就走把,锣缩什么,谁留你们,长江后浪推前浪,滚把
- 请问“cannot focus a disabled or invisible window"是什么问题?
FirstCount: 100
SecondStuff.rName: 甲材料
SecondCount: 50
---------------------------------------
FirstStuff.rBody:12*FirstCount:100=1200
SecondStuff.rBody:15*SecondCount:50=750
Body:1950
---------------------------------------
FirstStuff.rTop:16*FirstCount:100=1600
SecondStuff.rTop:7*SecondCount:50=350
Top:1950
---------------------------------------
procedure TForm1.FormCreate(Sender: TObject);
type
TStuff = record //材料类型
rBody: Integer; //盒身数
rTop: Integer; //盒盖数
rName: string; //材料名称
end;
const
BoxCount = 1950; //盒子数(盒身和盒盖)
Stuff1: TStuff = (rBody: 15; rTop: 7; rName: '甲材料'); //甲材料可以做15个盒身和7个盒盖
Stuff2: TStuff = (rBody: 12; rTop: 16; rName: '乙材料'); //乙材料可以做12个盒身和16个盒盖
var
I, J: Integer;
Count1: Integer;
Count2: Integer;
begin
Count1 := 0;
Count2 := 0;
for I := BoxCount downto 0 do
for J := 1 to BoxCount do
if (I * Stuff1.rBody + J * Stuff2.rBody = BoxCount) and
(I * Stuff1.rTop + J * Stuff2.rTop = BoxCount) and
(Count1 + Count2 < I + J) then begin
Count1 := I;
Count2 := J;
end;
Memo1.Clear;
Memo1.Lines.Add(Format('Stuff1.rName: %s', [Stuff1.rName]));
Memo1.Lines.Add(Format('Count1: %d', [Count1]));
Memo1.Lines.Add(Format('Stuff2.rName: %s', [Stuff2.rName]));
Memo1.Lines.Add(Format('Count2: %d', [Count2]));
Memo1.Lines.Add('---------------------------------------');
Memo1.Lines.Add(Format('Stuff1.rBody:%d*Count1:%d=%d',
[Stuff1.rBody, Count1, Stuff1.rBody * Count1]));
Memo1.Lines.Add(Format('Stuff2.rBody:%d*Count2:%d=%d',
[Stuff2.rBody, Count2, Stuff2.rBody * Count2]));
Memo1.Lines.Add(Format('Body:%d',
[Stuff1.rBody * Count1 + Stuff2.rBody * Count2]));
Memo1.Lines.Add('---------------------------------------'); Memo1.Lines.Add(Format('Stuff1.rTop:%d*Count1:%d=%d',
[Stuff1.rTop, Count1, Stuff1.rTop * Count1]));
Memo1.Lines.Add(Format('Stuff2.rTop:%d*Count2:%d=%d',
[Stuff2.rTop, Count2, Stuff2.rTop * Count2]));
Memo1.Lines.Add(Format('Top:%d',
[Stuff1.rTop * Count1 + Stuff2.rTop * Count2]));
Memo1.Lines.Add('---------------------------------------');
end;
my email: [email protected]