求算法 急急急~~~

cekong0503 2011-09-06 03:40:51
有数组A,A[0..99]有100个数(或者更多),想求出这样几对数,满足y1-y2在某个阈值内,x1-x2在某个阈值内,x1,x2表示第几个,y1,y2表示x1,x2对应的值,不知道用什么方法能快速实现,请各位大侠帮帮忙啊 在线等
...全文
108 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2011-09-13
  • 打赏
  • 举报
回复
cekong0503 2011-09-08
  • 打赏
  • 举报
回复
谢谢大家的帮忙了
其实你很棒 2011-09-07
  • 打赏
  • 举报
回复
参考:
http://apps.hi.baidu.com/share/detail/6227165
rainychan2009 2011-09-07
  • 打赏
  • 举报
回复
y1,y2表示x1,x2对应的值
什么意思
cekong0503 2011-09-07
  • 打赏
  • 举报
回复
没有人吗??。。。。。
「已注销」 2011-09-07
  • 打赏
  • 举报
回复

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, DBGrids;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Edit3: TEdit;
Edit4: TEdit;
StringGrid1: TStringGrid;
procedure Search(IndexMin, IndexMax, ValueMin, ValueMax: Integer);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private 愰尵 }
public
{ Public 愰尵 }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

const
A: Array[0..9] of Integer = (0,44,11,61,22,74,33,87,44,100);

procedure TForm1.Search(IndexMin, IndexMax, ValueMin, ValueMax: Integer);
var
I: Integer;
x1, x2: Integer;
y1, y2: Integer;
begin
// 清空StringGrid1
for I := 1 to ( StringGrid1.RowCount - 1 ) do
begin
StringGrid1.Rows[I].Clear;
StringGrid1.RowCount := 0;
end;
// 查找符合要求的组合
for x2 := 0 to ( IndexMax - IndexMin -1 ) do
begin
for x1 := ( x2 + 1 ) to ( IndexMax - IndexMin ) do
begin
// x1-x2的值在给定阈值内
if ( ( x1 - x2 ) >= IndexMin ) and ( ( x1 - x2) <= IndexMax ) then
begin
y1 := A[x1];
y2 := A[x2];
// y1-y2的值在给定的阈值内
if ( ( y1 - y2 ) >= ValueMin ) and ( ( y1 - y2 ) <= ValueMax ) then
begin
with StringGrid1 do
begin
RowCount := RowCount + 1;
// 向StringGrid1中添加数据
Cells[0,RowCount-1] := IntToStr(x1);
Cells[1,RowCount-1] := IntToStr(x2);
Cells[2,RowCount-1] := IntToStr(y1);
Cells[3,RowCount-1] := IntToStr(y2);
end;
end;
end;
end;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
IndexMin, IndexMax: Integer; // x1-x2的最小值和最大值
ValueMin, ValueMax: Integer; // y1-y2的最小值和最大值
begin
IndexMin := StrToInt(Trim(Edit1.Text));
IndexMax := StrToInt(Trim(Edit2.Text));
ValueMin := StrToInt(Trim(Edit3.Text));
ValueMax := StrToInt(Trim(Edit4.Text));
Search(IndexMin, IndexMax, ValueMin, ValueMax);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
// 初始化StringGrid1
with StringGrid1 do
begin
ColCount := 4;
RowCount := 0;
StringGrid1.FixedCols := 2;
FixedRows := 0;
Cells[0,0] := 'x1';
Cells[1,0] := 'x2';
Cells[2,0] := 'y1';
Cells[3,0] := 'y2';
end;
end;

end.
「已注销」 2011-09-07
  • 打赏
  • 举报
回复
vokeyliu 2011-09-07
  • 打赏
  • 举报
回复
没有说的而别明白,但是排序肯定是首先要作的
cekong0503 2011-09-06
  • 打赏
  • 举报
回复
自己顶顶 不知道我说的明白不 高手进来指点指点吧

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧