模拟(一)回型矩阵、螺旋矩阵

news/2025/2/16 3:21:39/

回型矩阵_牛客题霸_牛客网

描述

给你一个整数n,按要求输出n∗n的回型矩阵

输入描述:

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

1<=n<=19

输出描述:

输出n行,每行包含n个正整数.

示例1

输入:

4
输出:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

#include <iostream>
using namespace std;
#include<vector>int main() {int n;cin>>n;vector<vector<int>> arr(n, vector<int> (n));int left = 0, right = n-1;int up = 0, down = n-1;int index = 1;while(index <= n*n){for(int i = left; i <= right; i++){arr[up][i] = index++;}up++;for(int i = up; i <= down; i++){arr[i][right] = index++;}right--;for(int i = right; i >= left; i--){arr[down][i] = index++;}down--;for(int i = down; i >= up; i--){arr[i][left] = index++;}left++;}for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){cout<<arr[i][j]<<" ";}cout<<endl;}return 0;
}
// 64 位输出请用 printf("%lld")

螺旋矩阵_牛客题霸_牛客网

给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。

class Solution {
public:vector<int> spiralOrder(vector<vector<int> > &matrix) {vector<int> res;if(matrix.empty()) return res;int left = 0, right = matrix[0].size()-1;int up = 0, down = matrix.size()-1;while(true){// 左-->右for(int i = left; i <= right; i++)res.push_back(matrix[up][i]);if(++up > down) break;// 上-->下for(int i = up; i <= down; i++)res.push_back(matrix[i][right]);if(--right < left) break;// 右-->左for(int i = right; i >= left; i--)res.push_back(matrix[down][i]);if(--down < up)break;// 下-->上for(int i = down; i >= up; i--)res.push_back(matrix[i][left]);if(++left > right)break;}return res;}
};

剑指 Offer 29. 顺时针打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

class Solution {

public:

    vector<int> spiralOrder(vector<vector<int>>& matrix) {

        vector<int> res;

        if(matrix.empty())return res;

        int left = 0, right = matrix[0].size()-1;

        int up = 0, down = matrix.size()-1;

        while(1)

        {

            for(int i = left; i <= right; i++)

            {

                res.push_back(matrix[up][i]);

            }

            if(++up > down)break;

            for(int i = up; i <= down; i++)

            {

                res.push_back(matrix[i][right]);

            }

            if(--right < left) break;

            for(int i = right; i >= left; i--)

            {

                res.push_back(matrix[down][i]);

            }

            if(--down < up)break;

            for(int i = down; i >= up; i--)

            {

                res.push_back(matrix[i][left]);

            }

            if(++left > right)break;

        }

        return res;

    }

};


http://www.ppmy.cn/news/22666.html

相关文章

5G NR R16 SPS

一 简介 今天给大家介绍一个R16的小topic&#xff1a;SPS——Semi-persistent Scheduling(半持续调度)&#xff0c;与传统的Dynamic Scheduling(动态调度)相对应。 首先解释什么是SPS&#xff0c;我们知道目前常用的调度方式是动态调度&#xff0c;也就是一个DCI指示一个PDSC…

【内网安全-隧道搭建】内网穿透_Frp上线、测试

目录 Frp&#xff08;简易上线&#xff09; 1、简述&#xff1a; 2、工具&#xff1a; 3、使用&#xff1a; 1、准备&#xff1a; 2、服务端&#xff08;公网&#xff09;&#xff1a; 2、客户端&#xff08;内网&#xff09;&#xff1a; 3、测试方法&#xff1a; 4、…

乾元通多卡聚合通信设备保障生态环境监测网络

乾元通多卡聚合通信设备保障生态环境监测网络 针对目前城市大气环境监测网格化建设&#xff0c;推出的新一代城市网格化大气环境监测系统&#xff0c;可以实现城市区域环境多维一体化监测管理&#xff0c;该设备主要用于监测大气环境中的PM10、TSP、PM2.5等颗粒物浓度&#xff…

最短路之Floyd-Warshall(10张图解)

只有五行的算法 四种最短路算法 Floyd算法 时间复杂度高&#xff0c;但实现容易&#xff08;5行核心代码&#xff09;&#xff0c;可解决负权边&#xff0c;适用于数据范围小的 Dijkstra算法 不能解决负权边&#xff0c;但具有良好扩展性&#xff0c;且复杂度较低 Bellman-For…

【自学Python】Python字符串首字母大写

Python字符串首字母大写 大纲 Python字符串首字母大写教程 在开发过程中&#xff0c;很多时候我们需要将一个 字符串 首字母转成大写的需求&#xff0c;在 Python 中&#xff0c;将某个字符串的首字母转成大写的函数为 title() 。 Python title()函数详解 语法 S.title() …

【C/C++基础练习题】复习题卷一

定义变量时&#xff0c;变量的存储类说明符有的可以省略 在函数内&#xff0c;定义变量时储存类型符可以省略的是auto 增1和减1运算符只可以作用在在变量上&#xff0c;不可以用在表达式和常量上 在定义一个数组时&#xff0c;对其部分元素进行了初始化&#xff0c;没有初始化的…

2023-02-06 Elasticsearch 分词器相关

分词器是es中的一个组件&#xff0c;通俗意义上理解&#xff0c;就是将一段文本按照一定的逻辑&#xff0c;分析成多个词语&#xff0c;同时对这些词语进行常规化的一种工具&#xff1b;ES会将text格式的字段按照分词器进行分词&#xff0c;并编排成倒排索引&#xff0c;正是因…

pkl文件读写

想要将拿到的数据做切片处理&#xff0c;但是每训练一次网络就需要切一次&#xff0c;这样的效率太低了&#xff0c;然后就想着先把切片后的数据存储起来&#xff0c;然后训练网络的时候直接调用就可以。学习了一下python的pkl文件的读写&#xff0c;记录下来&#xff0c;方便以…