一、题目要求
如下图所示,小明用从1开始的正整数“蛇形”填充无限大的矩阵。容易看出矩阵第二行第二列中的数是5。请你计算矩阵中第20行第20列的数是多少?
1 2 6 7 15 …
3 5 8 14 …
4 9 13 …
10 12 …
11 …
二、题目分析
将题目中所给数字图像倾斜得到如下图所示的图像
1
3 2
4 5 6
10 9 8 7
11 12 13 14 15
可以看到 1行1列=1 最大 =1*1
2行2列=5 最大=2*3
3行3列=13 最大=3*5
........................
20行20列=20*2-1=39
解决了数的位置问题,现在找相应规律,来算出20行20列的数值,可以发现每行的最大的一位数等于其在上图三角形层数乘以行数或列数。
三、根据上述分析,可以写出以下代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n = 20;
int sum = 0;
int ans = 0;
sum = (n*2-1)*20;
ans = sum-(n-1);
printf("ans=%d\n",ans);
return 0;
}
代码及运行结果