蛇形填数

蛇形填数

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

如下图所示,小明用从 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;
}

原文链接: https://www.cnblogs.com/bujidao1128/p/17135963.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    蛇形填数

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/319137

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月24日 下午3:11
下一篇 2023年2月24日 下午3:11

相关推荐