回 帖 发 新 帖 刷新版面

主题:数的划分

数的划分
[问题描述] 
  将整数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;

回复列表 (共2个回复)

沙发

分````
       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]

板凳

典型的“动归”```

我来回复

您尚未登录,请登录后再回复。点此登录或注册