Matlab5阶0-1矩阵如果3次方如果还是0-1矩阵,最多有多少个1?写个程序遍历所有的0-1矩阵(5阶),然后验证它的三次方是不是0-1矩阵,记录1的个数。

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