题目:
来源于Mathwork上的Cody,Problem 18 - Bullseye Matrix,
我是采用从外圈到内圈逐渐生成的方式,以 n=5 为例,第一次循环,生成
3 3 3 3 3
3 3 3 3 3
3 3 3 3 3
3 3 3 3 3
3 3 3 3 3
第二次循环,生成
3 3 3 3 3
3 2 2 2 3
3 2 2 2 3
3 2 2 2 3
3 3 3 3 3
第三次循环,生成
3 3 3 3 3
3 2 2 2 3
3 2 1 2 3
3 2 2 2 3
3 3 3 3 3
可以简单地理解为逐次覆盖。
代码如下,
function y=Bullseye_Matrix(n)
max_size=(n+1)/2;
sum_1=max_size*2;
for i=1:max_size
y(i:sum_1-i,i:sum_1-i)=max_size+1-i;
end
end
测试,
>> Bullseye_Matrix(7)
ans =
4 4 4 4 4 4 4
4 3 3 3 3 3 4
4 3 2 2 2 3 4
4 3 2 1 2 3 4
4 3 2 2 2 3 4
4 3 3 3 3 3 4
4 4 4 4 4 4 4