OFFSET
0,24
COMMENTS
A(n,k) = 0 if n>1 and k>0 and (k=1 or k*(n-1) mod 2 = 1).
The element sum of each subset is k*(k*n+1)/2.
LINKS
Wikipedia, Partition of a set
EXAMPLE
A(0,0) = 1.
A(1,1) = 1: {1}.
A(2,2) = 1: {1,4}, {2,3}.
A(3,3) = 2: {1,5,9}, {2,6,7}, {3,4,8}; {1,6,8}, {2,4,9}, {3,5,7}.
A(4,2) = 1: {1,8}, {2,7}, {3,6}, {4,5}.
A(2,4) = 4: {1,2,7,8}, {3,4,5,6}; {1,3,6,8}, {2,4,5,7}; {1,4,5,8}, {2,3,6,7}; {1,4,6,7}, {2,3,5,8}.
Square array A(n,k) begins:
1, 1, 1, 1, 1, 1, 1, ...
1, 1, 1, 1, 1, 1, 1, ...
1, 0, 1, 0, 4, 0, 29, ...
1, 0, 1, 2, 32, 305, 4331, ...
1, 0, 1, 0, 392, 0, 2097719, ...
1, 0, 1, 11, 6883, 3245664, 2549091482, ...
MAPLE
b:= proc() option remember; local i, j, t, k, m; m:= args[nargs-1]; k:= args[nargs]; if args[1]=0 then `if`(nargs=3, 1, b(args[t] $t=2..nargs)) elif args[1]<1 then 0 else add(`if`(args[j]<m, 0, b(sort([seq(args[i] -`if`(i=j, m+1/97, 0), i=1..nargs-2)])[], m-1, k)), j=1..nargs-2) fi end:
A:= (n, k)-> `if`(n=0 or k=0, 1, b((k*(n*k+1)/2 +k/97) $n, k*n, k)/n!):
seq(seq(A(n, d-n), n=0..d), d=0..10);
MATHEMATICA
b[args_List] := b[args] = Module[{nargs = Length[args], k = args[[-1]], m = args[[-2]]}, Which[args[[1]] == 0, If[nargs == 3, 1, b[args[[2 ;; nargs]]]], args[[1]] < 1, 0, True, Sum[If[args[[j]] < m, 0, b[Join[Sort[Table[args[[i]] - If[i == j, m + 1/97, 0], {i, 1, nargs - 2}]], {m - 1, k}]]], {j, 1, nargs - 2}] ]]; A[n_, k_] := If[n == 0 || k == 0, 1, b[Join[Array[(k*(n*k + 1)/2 + k/97) &, n], {k*n, k}]]/n!]; Table[Table[A[n, d - n], {n, 0, d}], {d, 0, 10}] // Flatten (* Jean-François Alcover, Jan 21 2015, after Alois P. Heinz *)
CROSSREFS
KEYWORD
nonn,tabl
AUTHOR
Alois P. Heinz, Jan 09 2012
STATUS
approved