主题:数数数数数
问题:
将整数n分成k份,且每份不能为空,任意两分不能相同(不考虑顺序)。
例如:n=7,k=3,下面三种分法被认为是相同的。
1,1,5; 1,5,1; 5,1,1;
问有多少种不同的分法。
输入:n,k (6<n≤200,2≤k≤6)
输出:一个整数,即不同的分法。
[样例]:
输入:7 3
输出:4
[说明]:(此部分不用输出)
样例中的4种分法为:1,1,5; 1,2,4; 1,3,3; 2,2,3;
解答:var
a:array[1..201,1..6] of longint;
i,j,k,h,l:integer;
begin
readln(n,k);
fillchar(a,sizeof(a),0);
for i:=1 to 201 do
begin
a[i,1]:=1;
a[i,2]:=i div 2;
end;
for i:=3 to 201 do
begin
for j:=3 to 6 do
begin
for h:=1 to j do
a[i,j]:=a[i-1,h]+a[i,j];
end;
end;
writeln(a[n,k]);
end.
程序有可能有错```
起其中思想是 ````a[n,k]是等于a[n-k,。] 的前k项和
例如:a[200,6]是a[194,1]+a[194,2]+a[194,3a[194,4]+a[194,5]+a[194,6]
本资料源自于:[url=http://www.nengdongyingyu.org]能动英语、表音密码[/url]
将整数n分成k份,且每份不能为空,任意两分不能相同(不考虑顺序)。
例如:n=7,k=3,下面三种分法被认为是相同的。
1,1,5; 1,5,1; 5,1,1;
问有多少种不同的分法。
输入:n,k (6<n≤200,2≤k≤6)
输出:一个整数,即不同的分法。
[样例]:
输入:7 3
输出:4
[说明]:(此部分不用输出)
样例中的4种分法为:1,1,5; 1,2,4; 1,3,3; 2,2,3;
解答:var
a:array[1..201,1..6] of longint;
i,j,k,h,l:integer;
begin
readln(n,k);
fillchar(a,sizeof(a),0);
for i:=1 to 201 do
begin
a[i,1]:=1;
a[i,2]:=i div 2;
end;
for i:=3 to 201 do
begin
for j:=3 to 6 do
begin
for h:=1 to j do
a[i,j]:=a[i-1,h]+a[i,j];
end;
end;
writeln(a[n,k]);
end.
程序有可能有错```
起其中思想是 ````a[n,k]是等于a[n-k,。] 的前k项和
例如:a[200,6]是a[194,1]+a[194,2]+a[194,3a[194,4]+a[194,5]+a[194,6]
本资料源自于:[url=http://www.nengdongyingyu.org]能动英语、表音密码[/url]