5阶0-1矩阵如果3次方如果还是0-1矩阵,最多有多少个1?用matlab写个程序遍历所有的0-1矩阵(5阶),然后验证它的三次方是不是0-1矩阵,记录1的个数。
你好,可以这么写,供参考:
clc; clear
c = cell(25,1);
[c{:}] = ndgrid([false, true]);
c = cellfun(@(i)reshape(i, numel(i), 1), c', 'uniform', 0);
c = cell2mat(c)';
c = reshape(c, 5,5,numel(c)/25);
idx = false(size(c,3),1);
count = zeros(size(c,3),1);
for i = 1:size(c,3)
d = double(c(:,:,i));
e = d*d*d;
e = e(:);
p = e==1;
q = e==0;
f = p|q;
idx(i) = all(f(:)) & sum(p)>0 & sum(q)>0;
count(i) = sum(d(:));
end
c = c(:,:,idx);
count = count(idx);
[maxCount,i] = max(count) % maxCount就是矩阵1最多的个数,为9
c(:,:,i) % 满足条件的1最多的那个矩阵
结果:
maxCount =
9
ans =
5×5 logical 数组
0 0 0 0 0
1 1 0 0 0
1 0 0 0 0
1 1 1 0 0
1 1 1 0 0
可见最多只能有9个1