每日一题 蛇形矩阵

2023-10-27

蛇形矩阵

输入两个整数nm,输出一个nm列的矩阵,将数字 1 到 n*m 按照回字蛇形填充至矩阵中。

具体矩阵形式可参考样例。

输入格式
输入共一行,包含两个整数nm

输出格式
输出满足要求的矩阵。

矩阵占n行,每行包含m个空格隔开的整数。

数据范围
1≤n,m≤100
输入样例:

3 3

输出样例:

1 2 3
8 9 4
7 6 5

分析:
设置一个num,用于记录数组矩阵中某个位置该填写的数字,设置一个x,y用于记录下一步该填哪个位置。在while循环里逐个填入。

代码:
c++:

#include<iostream>
#include<algorithm>
using namespace std;
const int N = 101;
int a[N][N],n,m;
int main()
{
	cin >> n >> m;
	int num = 1,x=0,y=0;
    a[x][y] = num;
	while (num < m * n)
	{
        while (y + 1 < m && !a[x][y + 1]) //向右填入num
        {
            a[x][++y] = ++num;
        }
        while (x + 1 < n && !a[x + 1][y]) //向下填入num
        {
            a[++x][y] = ++num;
        }
        while (y  > 0 && !a[x][y - 1]) //向左填入num
        {
            a[x][--y] = ++num;
        }
        while (x > 0 && !a[x - 1][y]) //向上填入num
        {
            a[--x][y] = ++num;
        }
	}
    for(int i = 0;i < n;i++)
    {
        for (int j = 0;j < m;j++)
        {
            cout << a[i][j] << " ";
        }
        cout<<endl;
    }
	return 0;
}

python:

n,m = map(int,input().split())
a = [[0]*(m) for i in range(n)]
x = 0
y = 0
num = 1
a[x][y] = num
while num < n*m:
    while (y + 1 < m) and (not(a[x][y + 1])): #向右填入num
        num += 1  # python中没有自增自减语句
        y += 1
        a[x][y] = num
    while (x + 1 < n) and (not(a[x + 1][y])): #向下填入num
        num += 1
        x += 1
        a[x][y] = num
    while (y > 0) and (not(a[x][y - 1])): #向左填入num
        num += 1
        y -= 1
        a[x][y] = num
    while (x > 0) and (not(a[x - 1][y])): #向上填入num
        num += 1
        x -= 1
        a[x][y] = num
for r in a:
    for i in r:
        print(i,end=" ")
    print()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每日一题 蛇形矩阵 的相关文章

随机推荐

  • 祖传Python代码,初学者必用,含泪发出

    今天分享几段工作生活中常用的代码 都是最为基础的功能和操作 而且大多还都是出现频率比较高的 很多都是可以拿来直接 使用或者简单修改就可以放到自己的项目当中 日期生成 很多时候我们需要批量生成日期 方法有很多 这里分享两段代码 Python学
  • 华为HJ2 计算某字符出现次数

    a input b input num 0 for i in range len a if b lower a i lower num num 1 print num
  • CUDA基本优化方法

    一 基于编程模型和执行模型的优化方法 1 选取合适的gridDim和blockDim blockDim最好为32的整数倍 因为执行指令的基本单位为线程束 线程束内的所有线程统一执行广播下来的命令 而线程束的线程数量基本为32 当block被
  • xx排排网数据加密(js逆向)

    网址 aHR0cHM6Ly9kYy5zaW11d2FuZy5jb20v 点翻页看抓包信息 这个data就是加密后的数据 这里的key是一段代码 这是解密所需的key 先拿出来格式化看看 这个和加速乐的处理方法是一样的 把evel换成cons
  • 【Pygame经典合集】​​​​​​终极白给大招:让你玩儿到爽(附多款游戏源码)

    导语 嘿 我是木木子 关注我 跟我一起玩游戏啦 其实嘛 最近的话游戏的话实在是没什么可以写的了 很多游戏的话太难仿制起来很费时间 于是 就有了今天这篇小合集 哈哈哈 这是一个pygame的项目 内含4款单个游戏的哦 想玩那款玩儿那款的哈 今
  • RS485通讯接口定义图详解

    RS485采用差分信号负逻辑 2V 6V表示 0 6V 2V表示 1 RS485有两线制和四线制两种接线 四线制只能实现点对点的通信方式 现很少采用 现在多采用的是两线制接线方式 这种接线方式为总线式拓朴结构在同一总线上最多可以挂接32个结
  • docked --debug 功能

    docker不正常时使用查看 太好用了 bip Bridge IP 是Docker的配置选项之一 用于指定Docker守护进程创建的网络桥接接口的IP地址和子网掩码 在设置bip时 确保所指定的IP地址不以0结尾 当使用以0结尾的IP地址作
  • 移动app自动化测试工具发展历程--完整版

    最近在总结关于移动app的自动化测试的系列文章 本来想在7月份推出这个系列 但是又担心7月份的天气太热 开空调费油 所以索性 想到哪就整理到哪 持续的推出来吧 今天先把移动app自动化测试工具总结一下 我大概的搜索了一下 本站的大佬 整理的
  • (C语言)矩阵转置 (10分)

    将一个3 3矩阵转置 即行和列互换 输入格式 在一行中输入9个小于100的整数 其间各以一个空格间隔 输出格式 输出3行3列的二维数组 每个数据输出占4列 输入样例 1 2 3 4 5 6 7 8 9 输出样例 1 4 7 2 5 8 3
  • 自己造一个简易的IOC轮子

    简易的IOC流程编写笔记 首先先对这个小demo做一个说明 首先这个demo是很简易的 里面有一些可以优化的复杂点我设置了TODO 如果你有兴趣的话 可以自己去完善一下 写这个demo就是为了让自己对IOC的一个流程更加熟悉 对于刚开始学习
  • 【ROS工具】ROS基础学习

    ROS基础学习 1 基本介绍 2 实际操作 1 基本介绍 ROS Robot Operating System 是一个机器人操作系统 开始于2007 三个中长期支持版本 对应着Ubuntu的三个LTS版本如下 ROS术语 主节点 ros m
  • 1139 First Contact(unique函数,string.substr()函数)

    PTA 程序设计类实验辅助教学平台 用map套个set来实现邻接表 排序都免了 include
  • Android开发之Retrofit/OkHttp使用

    OkHttp 简介 OkHttp是时下最火的Http请求框架 其官网及源码地址如下 OkHttp官网地址 http square github io okhttp OkHttp源码地址 https github com square okh
  • .Net下正则匹配规则

    Net中常用的正则表达式选项 1 IgnoreCase 忽略大小写 匹配时不区分大小写 2 Multiline 多行模式 更改 和 的含义 使它们分别在任意一行的行首和行尾匹配 而不仅仅在整个字符串的开头和结尾匹配 在此模式下 的精确含意是
  • 寻找小数

    题目描述 有一个分数a b 你需要找到数字c在这个数的小数点后第一次出现的位置 输入格式 输入一行 包含三个整数a b c 输出格式 输出一个整数 如果不存在c 输出 1 样例输入 1 2 0 样例输出 2 约定 1 lt a
  • TCP并发服务器的编程实现

    TCP并发服务器的编程实现 1 基于TCP的服务器编程模型 创建通信端点 套接字 返回该端点的文件描述符 sfd socket 2 2 将sfd和本地的ip地址和端口号绑定 bind 2 3 将sfd设置为被动连接状态 监听客户端的到来 如
  • linux中docker报错:ERROR: Got permission denied while trying to connect to the Docker daemon socket。

    文章目录 一 问题描述 二 问题分析 三 解决方法 1 切换成root用户操作 这是最直接的方法 切换命令 2 添加docker的用户组 把当前用户加入组中 四 gpasswd命令用法 一 问题描述 在运行docker命令 如docker
  • Redis集群教程(Redis cluster tutorial)

    本博文翻译自Redis官网 http redis io topics cluster tutorial 本文档以温和的方式介绍Redis集群 不使用复杂的方式来理解分布式系统的概念 它介绍了如何建立 测试和使用一个集群 没有详细的覆盖Red
  • C语言——猜数字游戏

    游戏规则 输入1则开始游戏 输入0则结束游戏 输入其他数字则会提醒选择错误 输入1 游戏开始 系统会随机生成一个数字 游戏这需要不断根据提醒调整输入的数字 直到输入正确 系统会输出 恭喜你 猜对了 include
  • 每日一题 蛇形矩阵

    蛇形矩阵 输入两个整数n和m 输出一个n行m列的矩阵 将数字 1 到 n m 按照回字蛇形填充至矩阵中 具体矩阵形式可参考样例 输入格式 输入共一行 包含两个整数n和m 输出格式 输出满足要求的矩阵 矩阵占n行 每行包含m个空格隔开的整数