根据数组的长度创建一个数字模式,这个例子很小,只是展示了如果数组的大小为 5,6 或 7 会是什么样子。(数组的实际长度约为 400,000)
我怎样才能得到这个数字模式。我当时认为它看起来有点像帕斯卡三角,但数字不对。
我正在使用类似于 Matlab 的 Octave 3.8.1
示例:如果一个数组的长度为 5,则该系列将是
a1=[1 1 1;1 2 2;1 2 3;1 2 2;1 1 1]
a2=[1 1 1;2 2 1;3 2 1;2 2 1;1 1 1]
示例:如果一个数组的长度为 6,则该系列将是
a1=[1 1 1;1 2 2;1 2 3;1 2 3;1 2 2;1 1 1]
a2=[1 1 1;2 2 1;3 2 1;3 2 1;2 2 1;1 1 1]
示例:如果一个数组的长度为 7,则该系列将是
a1=[1 1 1 1;1 2 2 2;1 2 3 3;1 2 3 4;1 2 3 3;1 2 2 2;1 1 1 1]
a2=[1 1 1 1;2 2 2 1;3 3 2 1;4 3 2 1;3 3 2 1;2 2 2 1;1 1 1 1]
见下图:
最佳答案
这应该是相当快的:
n = 9;
a1 = bsxfun(@min, min(1:n,n:-1:1).', 1:ceil(n/2));
a2 = a1(:,end:-1:1);
关于matlab - 根据数组的长度创建数字模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29031368/