当前位置: 首页 > news >正文

华为机考真题 -- 螺旋数字矩阵

题目描述:

疫情期间,小明隔离在家,百无聊赖,在纸上写数字玩。他发明了一种写法:给出数字 个数 n 和行数 m(0 < n ≤ 999,0 < m ≤ 999),从左上角的 1 开始,按照顺时针螺旋向内写方式,依次写出 2,3...n,最终形成一个 m 行矩阵。小明对这个矩阵有些要求:
1.每行数字的个数一样多
2.列的数量尽可能少
3.填充数字时优先填充外部
4.数字不够时,使用单个*号占位

输入描述:

两个整数,空格隔开,依次表示 n、m


输出描述:

符合要求的唯一矩阵

示例1:

输入
9 4


输出
1 2 3
* * 4
9 * 5
8 7 6
说明:9 个数字写成 4 行,最少需要 3 列

示例2:

输入
3 5


输出
1
2
3
*
*
说明:3 个数字写 5 行,只有一列,数字不够用*号填充

示例3:

输入
120 7


输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 19
45 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 63 20
44 83 114 115 116 117 118 119 120 * * * * * * 99 64 21
43 82 113 112 111 110 109 108 107 106 105 104 103 102 101 100 65 22
42 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 23
41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24

C++源码:

#include <iostream>
#include <vector>
#include <string>
using namespace std;void fillSpiralMatrix(int n, int m) {int column = (n + m - 1) / m;vector<vector<string>> mapGame(m, vector<string>(column, "*"));vector<int> dx = { 0, 1, 0, -1 }, dy = { 1, 0, -1, 0 };int directX = 0, directY = 0, dir = 0;for (int i = 1; i <= n; ++i) { mapGame[directX][directY] = to_string(i);if (i == n)break;while (true) { int nx = directX + dx[dir], ny = directY + dy[dir];if (nx < 0 || nx >= m || ny < 0 || ny >= column || mapGame[nx][ny] != "*") {dir = (dir + 1) % 4;}else {directX = nx;directY = ny;break;}}}int i = 0;while (i < m) {int j = 0;while (j < column) {cout << mapGame[i][j] << " ";++j;}cout << endl;++i;}
}signed main() {int n, m;cin >> n >> m;fillSpiralMatrix(n, m);system("pause");return 0;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • “金山-讯飞”杯2024年武汉理工大学程序设计竞赛 A. Mobiusp败走***(思维题-点双连通分量、连通性)
  • 51单片机:电脑通过串口控制LED亮灭(附溢出率和波特率详解)
  • SVN 解决冲突
  • 《算法笔记》总结No.6——贪心
  • Elasticsearch:Node.js ECS 日志记录 - Morgan
  • 【全面介绍语言模型的原理,实战和评估】
  • 使用Python绘制气泡图
  • 共话未来 | 人大金仓即将亮相TDBC 2024可信数据库发展大会
  • linux_进程概念——理解冯诺依曼体系结构
  • C基础day8
  • 微软推出全新的学习网站 Microsoft Learn
  • wifi模组Ai-M62-32S的IO映射和UDP透传测试
  • LAZYNVIM学习使用笔记
  • 构造函数语意学(The Semantics of Constructors)
  • Mybatis之动态sql、缓存、分页、配置数据源
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • [译]Python中的类属性与实例属性的区别
  • css选择器
  • JS函数式编程 数组部分风格 ES6版
  • Leetcode 27 Remove Element
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • 给github项目添加CI badge
  • 机器学习中为什么要做归一化normalization
  • 如何选择开源的机器学习框架?
  • 使用权重正则化较少模型过拟合
  • 算法-图和图算法
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 责任链模式的两种实现
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • 数据可视化之下发图实践
  • ![CDATA[ ]] 是什么东东
  • #pragma multi_compile #pragma shader_feature
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (MTK)java文件添加简单接口并配置相应的SELinux avc 权限笔记2
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (十)c52学习之旅-定时器实验
  • (原創) 物件導向與老子思想 (OO)
  • (转)大道至简,职场上做人做事做管理
  • (转)为C# Windows服务添加安装程序
  • (轉貼) UML中文FAQ (OO) (UML)
  • .gitignore文件---让git自动忽略指定文件
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .net CHARTING图表控件下载地址
  • .net 程序发生了一个不可捕获的异常
  • .net 后台导出excel ,word
  • .net对接阿里云CSB服务
  • .NET企业级应用架构设计系列之结尾篇
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @PreAuthorize注解