牛客网——蛇形数组

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

前言


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

一、蛇形数组


题目来源:

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

描述


给你一个整数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;
         }

总结


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

相关文章
|
8月前
|
Java
每日一题《剑指offer》数组篇之数组中重复的数字
每日一题《剑指offer》数组篇之数组中重复的数字
60 0
每日一题《剑指offer》数组篇之数组中重复的数字
|
8月前
|
Java
每日一题《剑指offer》数组篇之数组中只出现一次的两个数字
每日一题《剑指offer》数组篇之数组中只出现一次的两个数字
40 0
每日一题《剑指offer》数组篇之数组中只出现一次的两个数字
|
8月前
|
Java
每日一题《剑指offer》字符串篇之字符串的排列
每日一题《剑指offer》字符串篇之字符串的排列
82 0
每日一题《剑指offer》字符串篇之字符串的排列
|
8月前
|
Java
每日一题《剑指offer》数组篇之和为S的两个数字
每日一题《剑指offer》数组篇之和为S的两个数字
48 0
每日一题《剑指offer》数组篇之和为S的两个数字
|
8月前
|
算法 测试技术 C#
前缀和|二分查找|LeetCode2234| 花园的最大总美丽值
前缀和|二分查找|LeetCode2234| 花园的最大总美丽值
|
算法 Java API
力扣151 - 反转字符串中的单词【双指针与字符串的火花】
字符串与双指针也能擦除火花,算法图解带你手撕双指针
171 0
力扣151 - 反转字符串中的单词【双指针与字符串的火花】
|
8月前
|
Java 测试技术 Python
每日一题《剑指offer》字符串篇之表示数值的字符串
每日一题《剑指offer》字符串篇之表示数值的字符串
58 0
每日一题《剑指offer》字符串篇之表示数值的字符串
【剑指offer】-数组中只出现一次的数字-35/67
【剑指offer】-数组中只出现一次的数字-35/67
|
算法 索引
代码随想录算法训练营第八天 | 344.反转字符串541. 反转字符串II 剑指Offer 05.替换空格151.翻转字符串里的单词剑指Offer58-II.左旋转字符串
代码随想录算法训练营第八天 | 344.反转字符串541. 反转字符串II 剑指Offer 05.替换空格151.翻转字符串里的单词剑指Offer58-II.左旋转字符串
剑指offer 61. 数组中只出现一次的两个数字
剑指offer 61. 数组中只出现一次的两个数字
61 0
剑指offer 61. 数组中只出现一次的两个数字

热门文章

最新文章