回复:逻辑选择题
3 4 5 2 5 5 4 3 2 1 1.15
C:\TP\BIN> |
orz…………找来了TP,写个最朴素的枚举,结果用7秒多||||||更正:应该是1.15……………………
7秒多是备选答案为abcdef的情形orz
那么在下盗版misha姐的(谁能给我这orz的枚举逻辑提提意见|||)
程序在这
program question10;
var Answer,Enumlist:array[1..10] of integer;
i:integer;
tStart,tEnd:longint;
function chkQue1:boolean;
var Result:boolean;
i,j:integer;
begin
result:=false;
j:= 11;
For i:= 1 to 10 do
if Answer = 2 then
begin
j:= i;
break;
end;
if Answer[1]+1 = j then
Result:= true;
chkQue1:=Result;
end;
function chkQue2:boolean;
var Result:boolean;
i,j:integer;
begin
result:=false;
for i:= 1 to 9 do
if Answer = Answer[i+1] then
if Answer[2]+1 = i
then Result:= true
else
begin
Result:= false;
break;
end;
chkQue2:=Result;
end;
function chkQue3:boolean;
var Result:boolean;
begin
result:=false;
case Answer[3] of
1: if Answer[3] = Answer[1] then Result:= True;
2: if Answer[3] = Answer[2] then Result:= True;
3: if Answer[3] = Answer[4] then Result:= True;
4: if Answer[3] = Answer[7] then Result:= True;
5: if Answer[3] = Answer[6] then Result:= True;
end;
chkQue3:=Result;
end;
function chkQue4:boolean;
var Result:boolean;
i,j:integer;
begin
result:=false;
j:= 0;
For i:= 1 to 10 do
if Answer = 1 then
Inc(j);
if j+1 = Answer[4] then
Result:= true;
chkQue4:=Result;
end;
function chkQue5:boolean;
var Result:boolean;
i,j:integer;
begin
result:=false;
if Answer[5] = Answer[5+6-Answer[5]] then
Result:=True;
chkQue5:=Result;
end;
function chkQue6:boolean;
var Result:boolean;
i,j,k,l,m:integer;
begin
result:=false;
j:=0;
For i:= 1 to 10 do
if Answer = 1 then
Inc(j);
m:= 0;
for l:= 2 to 5 do
begin
k:= 0;
For i:= 1 to 10 do
if Answer = l then
Inc(k);
if (j = k) then
if (Answer[6] = l-1) then
BEGIN
Result:= True;
Break;
END
else m:= 1;
end;
if (Result = False) and (m = 0) and (Answer[6] = 5) then
Result:= True;
chkQue6:=Result;
end;
function chkQue7:boolean;
var Result:boolean;
i,j:integer;
begin
result:=false;
j:= Abs(Answer[7] - Answer[8]);
if (5 - j) = Answer[7] then
Result:= True;
chkQue7:=Result;
end;
function chkQue8:boolean;
var Result:boolean;
i,j:integer;
begin
result:=false;
j:= 0;
For i:= 1 to 10 do
if (Answer = 1) or (Answer = 5) then
Inc(j);
if Answer[8] + 1 = j then
Result:= True;
chkQue8:=Result;
end;
function chkQue9:boolean;
var Result:boolean;
i,j:integer;
begin
result:=false;
j:= 0;
For i:= 1 to 10 do
if (Answer = 1) or (Answer = 5) then
Inc(j);
j:= 10 - j;
case Answer[9] of
1: if (j = 2) or (j = 3) or (j = 5) or (j = 7) then
Result:= True;
2: if (j = 1) or (j = 2) or (j = 6) then
Result:= True;
3: if (j = 1) or (j = 4) or (j = 9) then
Result:= True;
4: if (j = 1) or (j = 8) then
Result:= True;
5: if (j = 0) or (j = 5) or (j = 10) then
Result:= True;
end;
chkQue9:=Result;
end;
function chkQue10:boolean;
begin
chkQue10:=true;
end;
begin
tStart:=MemL[$40:$6c];
for Enumlist[1]:=1 to 5 do
begin
Answer[1]:=Enumlist[1];
for Enumlist[2]:=1 to 5 do
begin
Answer[2]:=Enumlist[2];
for Enumlist[3]:=1 to 5 do
begin
Answer[3]:=Enumlist[3];
for Enumlist[4]:=1 to 5 do
begin
Answer[4]:=Enumlist[4];
for Enumlist[5]:=1 to 5 do
begin
Answer[5]:=Enumlist[5];
for Enumlist[6]:=1 to 5 do
begin
Answer[6]:=Enumlist[6];
for Enumlist[7]:=1 to 5 do
begin
Answer[7]:=Enumlist[7];
for Enumlist[8]:=1 to 5 do
begin
Answer[8]:=Enumlist[8];
for Enumlist[9]:=1 to 5 do
begin
Answer[9]:=Enumlist[9];
for Enumlist[10]:=1 to 5 do
begin
Answer[10]:=Enumlist[10];
if (chkQue1) AND (chkQue2) AND (chkQue3) AND (chkQue4) AND (chkQue5)
AND (chkQue6) AND (chkQue7) AND (chkQue8) AND (chkQue9) then
begin
for i:=1 to 10 do
write(Answer,' '); writeln;
end;
end;
end;
end;
end;
end;
end;
end;
end;
end;
end;
tEnd:=meml[$40:$6c];
writeln((tEnd-tStart)/18.2:2:2);
end.
0