等的时间太少了,三个小时出结果,我每次都等到2小时就等不及中断了 
n[464]:= K = 4;
F = Table[1, {K^K}];
B1 = Table[1, {K^K}];
B2 = Table[-1, {K^K}];
B3 = {Quotient[K^K , (K*K - K + 1)], -24};
LU = Table[{0, 1}, {i, 0, K^K - 1}];
R1 = Table[If[i == K, 0, 1], {i, K}];
R0 = Table[If[i == K, 1, 0], {i, K}];
S[n_] := DeleteDuplicates@Flatten@Table[
FromDigits[PadLeft[IntegerDigits[n, K], K]*RotateLeft[R1, j] + RotateLeft[R0*i, j], K],
{i, 0, K - 1}, {j, 0, K - 1}];
M1 = Table[If[MemberQ[S[j], i], 1, 0], {i, 0, K^K - 1}, {j, 0, K^K - 1}];
M2 = Table[If[i == j, -1, 0], {i, K^K}, {j, K^K}];
M3 = {Table[1, {K^K}], Table[-1, {K^K}]};
Timing[SOL = LinearProgramming[F, Join[M1, M2, M3], Join[B1, B2, B3], LU, Integers]]
CHRS = Map[StringJoin @@ (PadLeft[IntegerDigits[#, K], K] /. {0 -> "A", 1 -> "B", 2 -> "C", 3 -> "D"}) &, Flatten@Position[SOL, 1] - 1]
Length@CHRS
Out[475]= {9878.671875, {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}}
Out[476]= {"AACA", "ABAC", "ACBD", "ACDB", "ADBB", "ADDD", "BABC", \
"BADC", "BBCB", "BBCD", "BCAA", "BDAA", "CACA", "CBAC", "CCBB", \
"CCDD", "CDBD", "CDDB", "DAAB", "DAAD", "DBBA", "DBDA", "DCCC", "DDCC"}
Out[477]= 24 |