题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
如下图所示,小明用从 11 开始的正整数“蛇形”填充无限大的矩阵。
1 2 6 7 15 ...
3 5 8 14 ...
4 9 13 ...
10 12 ...
11 ...
...
容易看出矩阵第二行第二列中的数是 55。请你计算矩阵中第 2020 行第 2020 列的数是多少?
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
思路:可以分为从上往下和从下往上两种填写方向,如果从下往上填写,第i次填写的初始位置就是(i,1),横坐标-1,纵坐标+1,一共填写i次。同理可以得到从上往下写的规律。
#include<bits/stdc++.h>
using namespace std;
const int N=50;
int a[N][N];
int main()
{
int flag=0,t=1,nn=1;
while(1)
{
int i,j;
if(!flag)
{
flag=1;
i=t;
j=1;
a[i][j]=nn;
nn++;
for(int k=1;k<t;k++)
{
i-=1,j+=1;
a[i][j]=nn++;
}
}
else
{
flag=0;
i=1;
j=t;
a[i][j]=nn;
nn++;
for(int k=1;k<t;k++)
{
i+=1,j-=1;
a[i][j]=nn++;
}
}
t++;
if(t==40) break;
}
cout<<a[20][20];
return 0;
}
【运行结果】
答案为761。