using namespace std;
int total,n,k;
void search(int m,int s,int min){
int i;
if(s==k) { if(m>=min) total++;return;}
for(i=min;i<=m-(k-s)*min+1;i++)
search(m-i,s+1,i);
}
int main()
{
int i,j,l;
cin>>n>>k;
total=0;
search(n,1,1);
cout<<total;
system("pause");
}
procedure dfs(y,z,dqian,zong:longint);
var
dqian1,zong1:longint;
i,j:longint;
begin
if dqian>(n-zong) div z then exit;
if z=2 then
begin
i:=dqian;
j:=n-zong-i;
while i<=j do
begin
inc(sum);
inc(i);
dec(j);
end;
end
else begin
if dqian=0 then dqian1:=1 else dqian1:=dqian;
zong1:=zong+dqian1;
while dqian1<=(n-zong) div z do
begin
dec(y,dqian1);
dec(z);
dfs(y,z,dqian1,zong1);
dec(zong1,dqian1);
inc(y,dqian1);
inc(z);
inc(dqian1);
inc(zong1,dqian1);
end;
end;
end;
procedure work;
begin
dfs(n,m,0,0);
writeln(sum);
end;
测试结果1: 测试结果错误.错误结果为:4
正确结果应为:3
谁有第1个数据值也行