主题:请教一个问题
wpsb
[专家分:0] 发布于 2008-08-13 12:49:00
用数组读入一串长整型的数和它们的个数N,如果能把它们分成4组,且每组数的和都相等,则输出‘yes’,反之则输出‘no’。
哪位高手能帮我编一个过程?多谢
回复列表 (共4个回复)
沙发
abcwuhang [专家分:1840] 发布于 2008-08-15 11:53:00
搜索把
先求和再深搜
板凳
wpsb [专家分:0] 发布于 2008-08-15 14:54:00
能不能写出代码,深搜我不太会
3 楼
abcwuhang [专家分:1840] 发布于 2008-08-26 10:41:00
program nnnnnnnnn;
var n,total:longint;
a:array [1..1000] of longint;
ok:boolean;
used,b:array [1..1000] of boolean;
procedure digit(x:longint);
var i:integer;
begin
if x=0 then
begin
ok:=true;
for i:=1 to n do
if used[i] then b[i]:=true;
exit;
end;
for i:=1 to n do
if not(used[i]) and (x>=a[i]) then
begin
used[i]:=true;
digit(x-a[i]);
used[i]:=false;
end;
end;
procedure init;
var i:integer;
begin
readln(n);
fillchar(a,sizeof(a),0);
total:=0;
for i:=1 to n do
begin
read(a[i]);
total:=total+a[i];
end;
if (total mod 4<>0) then writeln('no')
else
begin
fillchar(b,sizeof(b),false);
for i:=1 to 3 do
begin
ok:=false;
used:=b;
digit(total div 4);
if not(ok) then
begin
writeln('no');
halt;
end;
end;
end;
begin
init;
end.
4 楼
wpsb [专家分:0] 发布于 2008-08-27 10:14:00
明白了,多谢
我来回复