4 4
1 1 2 2
3
DFS模板题
var a:array[1..100] of longint; f:array[1..100] of boolean; n,i,j,sum,ans,m:longint; procedure dfs(x,y,z:longint); var i:longint; begin if z>m then exit; if z=m then begin inc(ans); exit; end; for i:=x to n do if not f[i] then begin f[i]:=true; dfs(i,y+1,z+a[i]); f[i]:=false; end; end; begin fillchar(f,sizeof(f),false); readln(n,m); for i:=1 to n do read(a[i]); for i:=1 to n do begin f[i]:=true; dfs(i,1,a[i]); f[i]:=false; end; writeln(ans); end.
原文:http://www.cnblogs.com/yangqingli/p/4919280.html