var
a:array[1..10] of integer;
m,i,num:integer;
procedure next(m,x:integer;s:string);
var {x为当前选中的元素的下标,s为选中的元素的下标串组合}
i:integer;
ss:string;
begin
if m=0 then begin writeln(s); inc(num); end;
if m>0 then
for i:=x to 10 do begin
str(i:3,ss);
next(m-a[i],i+1,s+ss);
end;
end;
begin
for i:=1 to 10 do a[i]:=i;
m:=16;
num:=0;
next(m,1,'');
if num=0 then writeln('no')
else begin
writeln('yes');
writeln('num=',num);
end;
end.
温馨提示:答案为网友推荐,仅供参考