【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 螺旋矩阵填数(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员

✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解

💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导

👏 感谢大家的订阅➕ 和 喜欢💗

📎在线评测链接

https://app5938.acapp.acwing.com.cn/contest/2/problem/OD1084

🌍 评测功能需要 ⇒ 订阅专栏 ⇐ 后私信联系清隆解锁~

🍓OJ题目截图

在这里插入图片描述

文章目录

    • 📎在线评测链接
    • 🍓OJ题目截图
    • ⏰ 螺旋矩阵填数
      • 问题描述
      • 输入格式
      • 输出格式
      • 样例输入 1
      • 样例输出 1
      • 样例解释 1
      • 样例输入 2
      • 样例输出 2
      • 数据范围
      • 题解
      • 参考代码

⏰ 螺旋矩阵填数

问题描述

LYA 小姐最近在家无聊时发明了一种填数游戏。给定一个矩阵的行数 m m m 和需要填入的数字个数 n n n,从矩阵的左上角开始,按顺时针螺旋的方式依次填入从 1 1 1 开始的连续正整数。矩阵需要满足以下要求:

  1. 每行数字的个数相同。
  2. 列数尽可能少。
  3. 优先填充矩阵的外圈。
  4. 如果数字不够填充完整个矩阵,则使用单个星号 * 占位。

输入格式

输入为一行,包含两个用空格分隔的正整数 n n n m m m,分别表示需要填入的数字个数和矩阵的行数。

输出格式

输出为一个矩阵,每行元素之间用单个空格分隔,最后一行无多余空格。

样例输入 1

9 4

样例输出 1

1 2 3 
* * 4
9 * 5
8 7 6

样例解释 1

给定 9 9 9 个数字和 4 4 4 行,按要求填充矩阵。

样例输入 2

3 5

样例输出 2

1
2 
3
*
*

数据范围

  • 1 ≤ n , m ≤ 999 1 \le n, m \le 999 1n,m999

题解

我们可以使用一个二维数组来模拟矩阵,初始时将所有元素填充为 *。然后从左上角开始,按顺时针螺旋的方式依次填入数字。当遇到边界或已填充的元素时,改变方向继续填充。填充完成后,输出矩阵即可。

参考代码

  • Python
def soln(n, m):matrix = [['*' for _ in range(max((n - 1) // m + 1, 1))] for _ in range(m)]dx, dy = [0, 1, 0, -1], [1, 0, -1, 0]x, y, d = 0, 0, 0for i in range(1, n + 1):matrix[x][y] = str(i)nx, ny = x + dx[d], y + dy[d]if nx < 0 or nx >= m or ny < 0 or ny >= len(matrix[0]) or matrix[nx][ny] != '*':d = (d + 1) % 4nx, ny = x + dx[d], y + dy[d]x, y = nx, nyreturn [' '.join(row) for row in matrix]n, m = map(int, input().split())
print('\n'.join(soln(n, m)))
  • Java
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int cols = Math.max((n - 1) / m + 1, 1);String[][] matrix = new String[m][cols];for (String[] row : matrix) {Arrays.fill(row, "*");}int[] dx = {0, 1, 0, -1};int[] dy = {1, 0, -1, 0};int x = 0, y = 0, d = 0;for (int i = 1; i <= n; i++) {matrix[x][y] = Integer.toString(i);int nx = x + dx[d], ny = y + dy[d];if (nx < 0 || nx >= m || ny < 0 || ny >= cols || !"*".equals(matrix[nx][ny])) {d = (d + 1) % 4;nx = x + dx[d];ny = y + dy[d];}x = nx;y = ny;}for (String[] row : matrix) {System.out.println(String.join(" ", row));}}
}
  • Cpp
#include <iostream>
#include <vector>
#include <string>using namespace std;vector<string> soln(int n, int m) {vector<vector<string>> matrix(m, vector<string>(max((n - 1) / m + 1, 1), "*"));int dx[] = {0, 1, 0, -1}, dy[] = {1, 0, -1, 0};int x = 0, y = 0, d = 0;for (int i = 1; i <= n; i++) {matrix[x][y] = to_string(i);int nx = x + dx[d], ny = y + dy[d];if (nx < 0 || nx >= m || ny < 0 || ny >= matrix[0].size() || matrix[nx][ny] != "*") {d = (d + 1) % 4;nx = x + dx[d];ny = y + dy[d];}x = nx;y = ny;}vector<string> result;for (const auto& row : matrix) {string line;for (const auto& elem : row) {line += elem + " ";}line.pop_back();result.push_back(line);}return result;
}int main() {int n, m;cin >> n >> m;vector<string> result = soln(n, m);for (const auto& line : result) {cout << line << endl;}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/363171.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#——里氏转换详情

里氏转换 里氏转换就是派生类的对象赋值给父类对象&#xff0c;反之则不行 实例 : 先创键一个类然后继承 调用

一种502 bad gateway nginx/1.18.0的解决办法

背景:上线的服务突然挂掉了 step1&#xff0c;去后端日志查看&#xff0c;发现并无异常&#xff0c;就是请求无法被接收 step2&#xff0c;查看了nginx的错误日志&#xff0c;发现该文件为空 step3&#xff0c;查看了niginx的运行日志&#xff0c;发现了以下问题 [error] 38#…

第4章,在 PyCharm 中创建、打开、关闭项目的操作

在 PyCharm 中创建、打开、关闭项目的操作 在PyCharm中创建、打开和关闭项目的操作步骤。以下是每个操作的步骤说明&#xff0c;以及在PyCharm界面中可能对应的区域&#xff1a; 1、创建新项目 1&#xff09;启动PyCharm&#xff1a; 打开PyCharm IDE。 2&#xff09;创建新…

第4章 客户端-客户端管理

1. 客户端API 1.1client list client list命令能列出与Redis服务端相连的所有客户端连接信息。 127.0.0.1:6379> client list id254487 addr10.2.xx.234:60240 fd1311 name age8888581 idle8888581 flagsN db0 sub0 psub0 multi-1 qbuf0 qbuf-free0 obl0 oll0 omem0 events…

C# 类中访问修饰符的优先级

参考链接 : C# 指南 - .NET 托管语言 | Microsoft Learn 访问修饰符 - C# | Microsoft Learn

Redis 内存碎片是什么?如何清理?

Redis 内存碎片相关的问题在得物、美团、阿里、字节、携程等公司的后端面试中都曾出现过&#xff0c;还是建议认真准备一下。即使不是准备面试&#xff0c;日常开发也是能够用到的&#xff01; 什么是内存碎片? 你可以将内存碎片简单地理解为那些不可用的空闲内存。 举个例子&…

计网实训——不相同网段的PC相互通信

目录 提前准备APP路由器指令 实验一1、实验需求&#xff08;1&#xff09;实现同网段的PC相互通信。&#xff08;2&#xff09;实现不相同网段的PC相互通信。&#xff08;3&#xff09;分析相同和不同网段PC通信时MAC地址的变化。 2、实验拓扑3、实验步骤及实验截图&#xff08…

如何用Vue3和Plotly.js绘制动态3D图表?

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 Plotly.js: 使用Vue.js动态加载数据并绘制图表 应用场景 在数据可视化应用中&#xff0c;需要将数据动态加载到图表中并进行实时更新。本文将展示如何使用Plotly.js和Vue.js实现这一功能&#xff0c;从加载外…

http发展史(http0.9、http1.0、http1.1、http/2、http/3)详解

文章目录 HTTP/0.9HTTP/1.0HTTP/1.1队头阻塞&#xff08;Head-of-Line Blocking&#xff09;1. TCP 层的队头阻塞2. HTTP/1.1 的队头阻塞 HTTP/2HTTP/3 http3详解&#xff1a;http://t.csdnimg.cn/h45r3 HTTP/0.9 发布时间&#xff1a;1991年 特点&#xff1a; 只支持 GET 方…

关于怎么将wireshark抓包视频流转为视频播放出来

0.安装wireshark 安装PotPlayer 1.将以下两个插件放入 C:\Program Files\Wireshark\plugins 目录中 2.筛选视频流数据包&#xff0c;右键Decode As… 改为RTP 或者 右键->follow&#xff08;追踪流&#xff09;->UDP stream 然后叉掉弹窗 3.选择菜单Edit->Prefe…

BUUCTF-WEB(第二天)

[极客大挑战 2019]Http 这题明显考察的是http协议&#xff0c;打开靶场访问什么也没有&#xff0c;F12来查看看控制台的html源码&#xff0c;直到最后那里我们才看到一个Secret.php文件4&#xff0c;所以直接访问即可。 回显字符串&#xff1a;It doesnt come from https://S…

探究互联网领域知识,解密数字化时代神秘面纱

随着信息时代的不断发展&#xff0c;互联网的发展呈现出爆炸式的增长&#xff0c;以至于引起广泛的关注和深入的探究。互联网作为一个庞大的网络体系&#xff0c;涵盖着无穷无尽的信息和知识&#xff0c;其背后的科技和应用已经改变了人们的生活&#xff0c;产生了翻天覆地的变…

每日一道算法题 有效括号序列

题目 有效括号序列_牛客题霸_牛客网 (nowcoder.com) Python 1长度必须为偶数 2就像开心消消乐一样&#xff0c;一左一右就消掉。 class Solution:def isValid(self , s: str) -> bool:# write code here# flag[(),{},[]]# for _ in range(len(s)//2):# for i in fl…

查普曼大学团队使用惯性动捕系统制作动画短片

道奇电影和媒体艺术学院是查普曼大学的知名学院&#xff0c;同时也是美国首屈一指的电影学院之一&#xff0c;拥有一流电影制作工作室。 最近&#xff0c;道奇学院的一个学生制作团队接手了一个项目&#xff0c;该项目要求使用真人动作、视觉效果以及真人演员和CG角色之间的互动…

Maven笔记(更新中)

一、Maven简介 Maven是一款为Java项目构建,依赖管理的工具(软件),使用Maven可以自动化构建,测试,打包和发布项目,大大提高了开发效率和质量 Maven主要作用理解 依赖管理 Maven可以管理项目的依赖,包括自动下载所需依赖库,自动下载依赖所需的依赖并且保证版本没有冲突,依赖版…

docker +tmux 远程本地gdb调试

文章目录 远程调试docker pull失败docker上容器运行程序失败宿主机远程调试docker中运行的程序环境准备调试步骤 本地调试bugpwngdbtmuxTmux复制粘贴到其他地方pwngdb和tmux优化~~感觉用了大佬的镜像后宿主机来做pwn题都不香了~~ 远程调试 但目前不知道如何实现可以边跟着脚本…

深入探索Java开发世界:Redis~类型分析大揭秘

文章目录 深入探索Java开发世界&#xff1a;Redis~类型分析大揭秘一、数据结构类型二、分布式锁类型三、事物命令类型四、事物三大特性类型 深入探索Java开发世界&#xff1a;Redis~类型分析大揭秘 Redis数据库基础知识&#xff0c;类型知识点梳理~ 一、数据结构类型 Redis是一…

Redis集群部署合集

目录 一. 原理简述 二. 集群配置​​​​​​​ 2.1 环境准备 2.2 编译安装一个redis 2.3 创建集群 2.4 写入数据测试 实验一&#xff1a; 实验二&#xff1a; 实验三&#xff1a; 实验四&#xff1a; 添加节点 自动分配槽位 提升节点为master&#xff1a; 实验…

桌面提醒工具哪个好?简单好用的便签提醒app推荐

在日常的生活和工作中&#xff0c;我们经常会遇到各种各样的事情&#xff0c;有时候可能会遗忘一些重要的事情。这个时候&#xff0c;一个简单好用的便签提醒工具就显得尤为重要了。那么&#xff0c;哪款桌面提醒工具比较好用呢&#xff1f;下面&#xff0c;就为大家推荐一款我…

【新版本来袭】ONLYOFFICE桌面编辑器8.1 —— 重塑办公效率与体验

文章目录 一、功能完善的PDF编辑器&#xff1a;重塑文档处理体验编辑文本插入和修改各种对象&#xff0c;如表格、形状、文本框、图像、艺术字、超链接、方程式等添加、旋转和删除页面添加文本注释和标注 二、幻灯片版式设计&#xff1a;创意展示的无限舞台三、改进从右至左显示…