clear all;
%%
tic
a = 1:13;
A = [];sum1 = [];n = [];
num_t = size(a , 2) - 1;
%% 排列組合從13個元素中取出12個,中間的A13其實理論上不需要參加運算,只要得到A2-A12的數字就可以了
temp = combnk(a,num_t);
for k = 1:size(temp,1)
n = [n;perms(temp(k,:))];
end
A = n;
%% 挑選出我們需要的和和A1-A12的值
num = size (A);
sum1 = zeros (num(1) , num (2)/2);
for i = 1:num (1)
b = A (i,:);
for j = 1:2:num (2) - 1
if j == num (2) - 1
sum ((j + 1)/2) = b (j) + b (j+1) + b (1);
sum1(i,(j + 1)/2) = sum ((j + 1)/2);
else
sum ((j + 1)/2) = b (j) + b (j+1) + b (j+2);
sum1(i,(j + 1)/2) = sum ((j + 1)/2);
end
end
flag = 0;
num1 = size (sum);
for k = 1: num1(2) - 1
if sum (k) == sum (k+1)
flag = k + 1;
else
break;
end
end
if flag == num1(2)
fprintf ('第%d數組元素之和%d,%d,%d,%d,%d,%d相等,A2,A3,A4,...A10,A1值分別是%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n',i,sum,A (i,:))
end
end
toc
我個人的建議:
1、這個程序去比較牛叉的電腦運行,因為很容易出現內存不夠的情況,本人電腦最大運算的也只能計算1-11這種情況,經過測試是沒有錯誤的。但是1-13真的跑不動;
2、我這個程序計算的是A1-A12的情況,A13其實根本不參加運算,所以最後只要把它用剩下的數字代替就可以了;
3、如果有什麽問題,可以繼續解答。