蛇形填数
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
如下图所示,小明用从 1 开始的正整数“蛇形”填充无限大的矩阵。
1 2 6 7 15 ...
3 5 8 14 ...
4 9 13 ...
10 12 ...
11 ...
...
容易看出矩阵第二行第二列中的数是 5。请你计算矩阵中第 20 行第 20 列的数是多少?
运行限制
最大运行时间:1s
最大运行内存: 128M
分析
提交答案
方法一:
#include<bits/stdc++.h>
using namespace std;
int mp[200][200], row = 0, col = 0, cnt = 1;
int main() {
mp[0][0] = 1;
while(!mp[19][19]) {
//右移
mp[row][++col] = ++cnt;
//左下方
while(col) {
mp[++row][--col] = ++cnt;
}
//下移
mp[++row][col] = ++cnt;
//右上方
while(row) {
mp[--row][++col] = ++cnt;
}
}
/*for(int i = 0; i < 20; i++) {
for(int j = 0; j < 20; j++) {
cout << mp[i][j] << " ";
}
cout << endl;
}*/
cout << mp[19][19];
return 0;
}
方法二:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,s=1;
for(i=1;i<20;i++)
{
s+=4*i;
}
printf("%d",s);
return 0;
}
方法三:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
// 请在此输入您的代码
/*
1 2 6 7 15 ...
3 5 8 14 ...
4 9 13 ...
10 12 ...
11 ...
...
分析可以知道
(1)第一行,第一列 1 = 0*0 + 1*1;
(2)第二行,第二列 5 = 1*1 + 2*2;
(3)第三行,第三列 13 = 2*2 + 3*3;
....
(20)第20行,第20列 ? = 19*19 + 20*20;
*/
printf("%d",19*19 + 20*20);
return 0;
}
标签:...,20,++,int,填数,蛇形,row,mp
From: https://www.cnblogs.com/bujidao1128/p/17135963.html