机器名称 操作名称
M1 O1
M1 O2
M1 O3
M2 O1
M2 O2
M2 O4
M3 O2
M3 O3
M3 O4
上面的数据是从数据库中取出来的,要求把完成一次操作O1,O2,O3,O4所有可能用到的机器顺序都列出来,
想要的M的排序结果是: O1 O2 O3 O4
M1 M1 M1 M2
M1 M1 M1 M3
M1 M1 M3 M2
M1 M1 M3 M3
M1 M2 M1 M2
M1 M2 M1 M3
M1 M2 M3 M2
M1 M2 M3 M3
M2 M1 M1 M2
M2 M1 M1 M3
M2 M1 M3 M2
M2 M1 M3 M3
M2 M2 M1 M2
M2 M2 M1 M3
M2 M2 M3 M2
M2 M2 M3 M3
请各位高手帮我看看,怎么编程阿?
M1 O1
M1 O2
M1 O3
M2 O1
M2 O2
M2 O4
M3 O2
M3 O3
M3 O4
上面的数据是从数据库中取出来的,要求把完成一次操作O1,O2,O3,O4所有可能用到的机器顺序都列出来,
想要的M的排序结果是: O1 O2 O3 O4
M1 M1 M1 M2
M1 M1 M1 M3
M1 M1 M3 M2
M1 M1 M3 M3
M1 M2 M1 M2
M1 M2 M1 M3
M1 M2 M3 M2
M1 M2 M3 M3
M2 M1 M1 M2
M2 M1 M1 M3
M2 M1 M3 M2
M2 M1 M3 M3
M2 M2 M1 M2
M2 M2 M1 M3
M2 M2 M3 M2
M2 M2 M3 M3
请各位高手帮我看看,怎么编程阿?
解决方案 »
- 怎样把电子称的重量读入程序里(称首饰的电子称)
- 面试题(关于GIS方面的)大家讨论讨论
- 怪异问题——对不同窗体内进行同样的操作,请帮忙!
- 文件打开的问题
- 困扰我多年的问题???怎么远程连接?服务器,没固定IP的!能不能用花生壳来连接??????
- 新问题
- 关于字符串的问题(VB ->Delphi )
- 菜鸟问题:ADO怎么用
- 求购手机连锁店系统源代码或者代码交换!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 谁有操作txt文件的代码(delphi 5.0)立刻给分。
- DBGridEh里如何设置多列标头,既多个字段,除各自的字段名称外,还要共同显示一个标题或名称?
- 很简单的语法问题,进来看看
m [char](10) null,
o [char](2) null
)on [primary]
go
insert into tmp
select' M1','O1'
union
select 'M1', 'O2'
union
select 'M1', 'O3'
union
select 'M2', 'O1'
union
select 'M2', 'O2'
union
select 'M2', 'O4'
union
select 'M3', 'O2'
union
select 'M3', 'O3'
union
select 'M3', 'O4'select distinct a.m as '01', b.m as '02' ,c.m as '03', d.m as '04'
from tmp a , tmp b , tmp c, tmp d
where a.o= 'O1' and b.o = 'O2' and c.o = 'O3' and d.o = 'O4' 结果:
M1 M1 M1 M2
M1 M1 M1 M3
M1 M1 M3 M2
M1 M1 M3 M3
M1 M2 M1 M2
M1 M2 M1 M3
M1 M2 M3 M2
M1 M2 M3 M3
M1 M3 M1 M2
M1 M3 M1 M3
M1 M3 M3 M2
M1 M3 M3 M3
M2 M1 M1 M2
M2 M1 M1 M3
M2 M1 M3 M2
M2 M1 M3 M3
M2 M2 M1 M2
M2 M2 M1 M3
M2 M2 M3 M2
M2 M2 M3 M3
M2 M3 M1 M2
M2 M3 M1 M3
M2 M3 M3 M2
M2 M3 M3 M3
var
a,b,c,d,i:integer;
begin
ary1[1]:=1;
ary1[2]:=2;
ary2[1]:=1;
ary2[2]:=2;
ary2[3]:=3;
ary3[1]:=1;
ary3[2]:=3;
ary4[1]:=2;
ary4[2]:=3;
i:=1;
for a:=1 to 2 do
begin
for b:=1 to 3 do
begin
for c:=1 to 2 do
begin
for d:=1 to 2 do
begin
i:=I+1;
ary5[i]:='M'+inttostr(ary1[a])+' M'+inttostr(ary2[b])+' M'+inttostr(ary3[c])+' M'+inttostr(ary4[d]);
memo1.Lines.Add(ary5[i]);
end;
end;
end;
end;
end;这个也能排出来就是比较笨一点,呵呵
var
sql: String;
i : Integer;
begin
sql := 'select distinct a.m as ''01'', b.m as ''02'' ,c.m as ''03'', d.m as ''04'' '
+ ' from tmp a , tmp b , tmp c, tmp d where a.o= ''O1'' and b.o = ''O2'' '
+ ' and c.o = ''O3'' and d.o = ''O4'' ';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sql);
ADOQuery1.Open;
ADOQuery1.First;
while not(ADOQuery1.Eof) do
begin
for i := 0 to 3 do
begin
Memo1.Lines.Add(ADOQuery1.FieldByName('01').AsString)
+ ' ' + ADOQuery1.FieldByName('02').AsString)
+ ' ' + ADOQuery1.FieldByName('03').AsString)
+ ' ' + ADOQuery1.FieldByName('04').AsString))
end;
ADOQuery1.Next;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
sql: String;
begin
sql := 'select distinct a.m as ''01'', b.m as ''02'' ,c.m as ''03'', d.m as ''04'' '
+ ' from tmp a , tmp b , tmp c, tmp d where a.o= ''O1'' and b.o = ''O2'' '
+ ' and c.o = ''O3'' and d.o = ''O4'' ';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sql);
ADOQuery1.Open;
ADOQuery1.First;
while not(ADOQuery1.Eof) do
begin
Memo1.Lines.Add(ADOQuery1.FieldByName('01').AsString)
+ ' ' + ADOQuery1.FieldByName('02').AsString)
+ ' ' + ADOQuery1.FieldByName('03').AsString)
+ ' ' + ADOQuery1.FieldByName('04').AsString))
ADOQuery1.Next;
end;
end;
请问:怎么实现上面的问题阿?
“把完成一次操作O1,O2,O3,O4所有可能用到的机器顺序都列出来”?
还是把结果放到M的排序结果中?
排列出来,mz[o1][m2]:表示操作1在机器上进行
你的二维的动态数组中的数据是哪里来的,是用来做什么的?
procedure TForm1.Button2Click(Sender: TObject);
var
m: array of array of String;
mz: array of array[0..3] of String;
i,j, k,n, p,q,len: Integer;
begin
setLength(m, 4);
setLength(m[0], 2);
setLength(m[1], 3);
setLength(m[2], 2);
setLength(m[3], 2); m[0][0] := 'M1';
m[0][1] := 'M2'; m[1][0] := 'M1';
m[1][1] := 'M2';
m[1][2] := 'M3'; m[2][0] := 'M1';
m[2][1] := 'M3'; m[3][0] := 'M2';
m[3][1] := 'M3';
len := Length(m[0]) * Length(m[1]) * Length(m[2]) * Length(m[2]);
setLength(mz, len);
{for i := Low(m[0]) to High(m[0]) do
for j := Low(m[1]) to High(m[1]) do
for k := Low(m[2]) to High(m[2]) do
for n := Low(m[3]) to High(m[3]) do } i := len div Length(m[0]);
K := len div Length(m[1]);
n := len div Length(m[2]);
p := len div Length(m[3]);
j := 0;
while (j < len) do
begin
mz[j][0] := m[0][j div i];
mz[j][1] := m[1][j div (k div Length(m[0])) mod Length(m[1])];
mz[j][2] := m[2][j div (n div Length(m[0]) div Length(m[1])) mod Length(m[2])];
mz[j][3] := m[3][j div (p div Length(m[0]) div Length(m[1]) div length(m[2])) mod length(m[3])];
Inc(j);
end;
memo1.Lines.Clear;
for j := 0 to 23 do
memo1.Lines.Add(mz[j][0]+ ' ' + mz[j][1]+ ' ' + mz[j][2]+ ' ' + mz[j][3]);
end;