牛客网——蛇形数组

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

前言


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

一、蛇形数组


题目来源:

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

描述


给你一个整数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》字符串篇之字符串的排列
53 0
每日一题《剑指offer》字符串篇之字符串的排列
|
6月前
|
存储 算法 Serverless
代码随想录算法训练营第六天 | LeetCode 242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
代码随想录算法训练营第六天 | LeetCode 242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
45 0
代码随想录算法训练营第六天 | LeetCode 242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
|
6月前
|
存储 算法 C语言
【C语言刷题】猜名次、猜凶手、杨辉三角、杨氏矩阵、字符串左旋、判断是否为左旋子串
【C语言刷题】猜名次、猜凶手、杨辉三角、杨氏矩阵、字符串左旋、判断是否为左旋子串
53 0
|
9月前
|
算法 安全
代码随想录算法训练营第六天| 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
代码随想录算法训练营第六天| 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
|
9月前
|
存储 C语言
【C语言练习】杨氏矩阵、杨辉三角
【C语言练习】杨氏矩阵、杨辉三角
49 0
|
11月前
|
机器学习/深度学习 算法 NoSQL
【基础算法】浅浅刷个小题 # 反转字符串 # 反转字符串 II # 三个数的最大乘积 #
【基础算法】浅浅刷个小题 # 反转字符串 # 反转字符串 II # 三个数的最大乘积 #
|
算法 C语言 C++
【C语言蓝桥杯每日一题】——排列字母
哈喽各位友友们😊,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享【C语言蓝桥杯每日一题】——排列字母~ 都是精华内容,可不要错过哟!!!😍😍😍
118 0
|
测试技术
每日一题——倒置字符串
将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I
力扣刷题记录——709. 转换成小写字母、771. 宝石与石头、704. 二分查找
力扣刷题记录——709. 转换成小写字母、771. 宝石与石头、704. 二分查找
力扣刷题记录——709. 转换成小写字母、771. 宝石与石头、704. 二分查找
|
存储 容器
代码随想录刷题|LeetCode 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
代码随想录刷题|LeetCode 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
代码随想录刷题|LeetCode 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和