牛客网——蛇形数组

简介: 牛客网——蛇形数组

前言


今天给大家安排个高难度——蛇形数组。

一、蛇形数组


题目来源:

蛇形矩阵_牛客题霸_牛客网

描述


给你一个整数n,输出n∗n的蛇形矩阵。

输入描述:


输入一行,包含一个整数n

输出描述:


输出n行,每行包含n个正整数,通过空格分隔。


1<=n<=1000

image.png

不知道有没有伙伴和我一样,看到这东西人都傻了,有规律,但不多。

二、分析问题


我们不难发现,它是按照斜线,蛇形逐渐递增的,但是要找出它递增的条件还是有点难,我们先慢慢分析,我们先分析斜线,可以发现 行=列,数字大小一样,然后蛇形走位,是增减的问题了。

附上一张大佬分析图:

image.png

三、代码如下


#include <iostream>
using namespace std;
void snack(int n)
{
    int num = 1;
    int k = 0;
    int a[n][n];
    while(k < n)
    {
        for(int i = 0; i <= k; ++i)
        {
            if (k % 2 == 0)
            {
                a[k-i][i] = num++;
            }else
            {
                a[i][k-i] = num++;
            }
        }
        ++k;
    }
        int flag = 1;
    while(k < 2*n - 1)
    {
        for(int i = n-1;i>=flag;--i)
        {
            if(k%2 == 0)
            {
                a[k-i][i] = num++;
            }
            else
            {
                a[i][k-i] = num++;
            }
        }
            flag++;
            ++k;
        }
        for(int i = 0; i < n; ++i)
        {
        for(int j = 0; j< n; ++j)
        {
            cout<<a[i][j]<<" ";
        }
            cout<<endl;
        }
    }
            int main()
        {
            int n;
            cin >>n;
            snack(n);
                return 0;
         }

总结


今天和大家简单学习了一下蛇形数组,比较难,大家仔细琢磨会有所帮助的,希望可以共同进步哈~

相关文章
|
6月前
|
Java
每日一题《剑指offer》字符串篇之字符串的排列
每日一题《剑指offer》字符串篇之字符串的排列
78 0
每日一题《剑指offer》字符串篇之字符串的排列
|
6月前
|
Java
每日一题《剑指offer》数组篇之数组中只出现一次的两个数字
每日一题《剑指offer》数组篇之数组中只出现一次的两个数字
33 0
每日一题《剑指offer》数组篇之数组中只出现一次的两个数字
|
6月前
|
Java
每日一题《剑指offer》字符串篇之替换空格
每日一题《剑指offer》字符串篇之替换空格
54 0
每日一题《剑指offer》字符串篇之替换空格
|
6月前
|
Java
每日一题《剑指offer》数组篇之和为S的两个数字
每日一题《剑指offer》数组篇之和为S的两个数字
43 0
每日一题《剑指offer》数组篇之和为S的两个数字
|
12月前
|
算法
代码随想录算法训练营第八天 | LeetCode 344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串
代码随想录算法训练营第八天 | LeetCode 344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串
59 0
|
算法 索引
代码随想录算法训练营第八天 | 344.反转字符串541. 反转字符串II 剑指Offer 05.替换空格151.翻转字符串里的单词剑指Offer58-II.左旋转字符串
代码随想录算法训练营第八天 | 344.反转字符串541. 反转字符串II 剑指Offer 05.替换空格151.翻转字符串里的单词剑指Offer58-II.左旋转字符串
|
机器学习/深度学习 算法 NoSQL
【基础算法】浅浅刷个小题 # 反转字符串 # 反转字符串 II # 三个数的最大乘积 #
【基础算法】浅浅刷个小题 # 反转字符串 # 反转字符串 II # 三个数的最大乘积 #
|
算法 C语言 C++
【C语言蓝桥杯每日一题】——排列字母
哈喽各位友友们😊,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享【C语言蓝桥杯每日一题】——排列字母~ 都是精华内容,可不要错过哟!!!😍😍😍
142 0
|
测试技术
每日一题——倒置字符串
将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I
108 0
|
存储 容器
代码随想录刷题|LeetCode 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
代码随想录刷题|LeetCode 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
代码随想录刷题|LeetCode 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和