pascal程序问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 12:11:56
程序:请你设计一个程序,由计算机找出互不相同的4个自然数,它们之中,任意2个数之和为偶数,任意3个数之和可以被3整除,而且要求这4个数的和越小越好。(已知它们的和不会大于50。)
请给出这道题的答案,能给出原程序更好

最优解 0 6 12 18 附:所有符合条件的排列

0 6 12 18 sum:36 {最优解}
1 7 13 19 sum:40
0 6 12 24 sum:42
2 8 14 20 sum:44
1 7 13 25 sum:46
0 6 12 30 sum:48
0 6 18 24 sum:48
3 9 15 21 sum:48
2 8 14 26 sum:50

程序比较暴力 没做任何优化

var
x:array[1..4] of integer;
a,b,c,d,i,j,k:integer;

function condition1:boolean;
begin
for i:=1 to 4 do
for j:=1 to 4 do
if i<>j then
if (x[i]+x[j]) mod 2<>0 then
exit(false);
condition1:=true;
end;

function condition2:boolean;
begin
for i:=1 to 4 do
for j:=1 to 4 do
for k:=1 to 4 do
if (i<>j) and (j<>k) and (i<>k) then