牛客16502 螺旋矩阵
链接:https://ac.nowcoder.com/acm/problem/16502
来源:牛客网
题目描述
一个 n 行 n 列的螺旋矩阵可由如下方法生成:
从矩阵的左上角(第 1 行第 1 列)出发,初始时向右移动;如果前方是未曾经过的格子,则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。根据经过顺序,在格子中依次填入 1, 2, 3, … , n ,便构成了一个螺旋矩阵。
下图是一个 n = 4 时的螺旋矩阵。
现给出矩阵大小 n 以及 i 和 j ,请你求出该矩阵中第 i 行第 j 列的数是多少。
输入描述:
输入共一行,包含三个整数 n,i,j ,每两个整数之间用一个空格隔开,分别表示矩阵大小、待求的数所在的行号和列号。
输出描述:
输出一个整数,表示相应矩阵中第 i 行第 j 列的数。
找规律:
当 i == 1
时,res = j
当 i == n
时,res = 3n-2-j+1
当 j == 1
时,res = 4n-2-i
当 j == n
时, res = n+i-1
然后递归, 每减少一层 ==> n-2, i-1, j-1,并且要加上外层的 4n-4
import sys
sys.setrecursionlimit(10000000)
n, i, j = map(int,input().split())def fn(n, i, j):if i == 1:return jif i == n:return 3*n-2-j+1if j == 1:return 4*n-2-iif j == n:return n+i-1return fn(n-2, i-1, j-1)+4*n-4print(fn(n, i, j))
这里有个问题
Python中默认的最大递归深度是989,当尝试递归第990时便出现递归深度超限的错误:
RuntimeError: maximum recursion depth exceeded in comparison
可以手动设置递归调用深度:
import sys
sys.setrecursionlimit(10000000)
牛客16502 螺旋矩阵相关推荐
- 牛客题霸 [矩阵元素查找] C++题解/答案
牛客题霸 [矩阵元素查找] C++题解/答案 题目描述 已知int一个有序矩阵mat,同时给定矩阵的大小n和m以及需要查找的元素x,且矩阵的行和列都是从小到大有序的.设计查找算法返回所查找元素的二元数 ...
- 牛客题霸 [矩阵的最小路径和] C++题解/答案
牛客题霸 [矩阵的最小路径和] C++题解/答案. 题目描述 给定一个 n * m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的 ...
- 牛客题霸 [矩阵乘法] C++题解/答案
牛客题霸 [矩阵乘法] C++题解/答案 题目描述 给定两个nn的矩阵A和B,求AB. 题解: 都学过矩阵相乘把,[i][k]=[i][j]*[j][k] 代码: class Solution {pu ...
- 牛客题霸 [矩阵查找] C++题解/答案
牛客题霸 [矩阵查找] C++题解/答案 题目描述 请写出一个高效的在m*n矩阵中判断目标值是否存在的算法,矩阵具有如下特征: 每一行的数字都从左到右排序 每一行的第一个数字都比上一行最后一个数字大 ...
- 【牛客 -2A】矩阵(二分,字符串哈希)
题干: 给出一个n * m的矩阵.让你从中发现一个最大的正方形.使得这样子的正方形在矩阵中出现了至少两次.输出最大正方形的边长. 输入描述: 第一行两个整数n, m代表矩阵的长和宽: 接下来n行,每行 ...
- 牛客网--蛇形矩阵(Java)
题目描述 题目说明 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形. 样例输入 5 样例输出 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 接口说明 原型 void ...
- 牛客题霸题目及题解汇总
牛客题霸 单链表的选择排序 C++题解/答案 牛客题霸 最少素数拆分 C++题解/答案 牛客题霸 两数之和 C++题解/答案 牛客题霸 反转链表 C++题解/答案 牛客题霸 二分查找 C++题解/答案 ...
- 牛客观察 | 大厂疯狂招人背后: 中小企业要躺平“捡漏”吗?
员工的离职与跳槽看上去是个人行为,实际上更多时候却是企业问题行为的折射,企业之间的竞争,归根结底,是人才管理的竞争. "XX企业高管Z某离职,去创业"."原XX产品团队负 ...
- 牛客题霸 [螺旋矩阵] C++题解/答案
牛客题霸 [螺旋矩阵] C++题解/答案 题目描述 给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素. 题解: 其实就是模拟过程,先往左走,走到头向下走,到头后向左走,再向 ...
最新文章
- nexus 4 linux,Nexus 4刷机Ubuntu Touch教程
- 运行shell命令并捕获输出
- python turtle库有什么用_Python中turtle库的使用
- 中间省略_SpringBoot2 高级案例(03): 整合sharding-jdbc中间件,实现数据分库分表
- uni-app 七牛云上传文件
- timthumb.php 2.814,苏醒主题Grace8.0最新版(免费更新)
- 高性能分布式锁-redisson
- 发那科程序全部输出_走,去看看发那科机器人全新的自动化解决方案!
- 华硕主板怎么开启tpm2.0
- qt可以实现创建临时无线热点吗?_数据线断了,身边又没有路由,如何无线高速传输文件?...
- Oracle行转列实例
- 【信号处理第十二章】转置卷积
- 算法与数据结构 第1章 当我们谈论算法的时候,我们在谈论什么?
- 利用CAM350快速完成拼板
- FileZilla Server多实例监听
- Python str count方法
- Microsoft Teams通话质量仪表盘(CQD)怎么玩?
- 推荐 10 个节省时间的 Mac 键盘快捷键
- AI具备创造力入选Science年度十大科学突破
- Java算法——整数转罗马数字(LeetCode第12题)
热门文章
- LeetCode 1095. 山脉数组中查找目标值(二分查找)
- EM(期望极大化)算法及其推广
- LeetCode 665. 非递减数列(双指针)
- 爬虫必须学会的正则表达式
- python经典100例(41-60)
- 大公司稳定工作和创业之间如何选择?
- 图谱实战 | 安全领域知识图谱建设与典型应用场景总结
- 论文浅尝 | 使用预训练深度模型和迁移学习方法的端到端模糊实体匹配
- Android官方开发文档Training系列课程中文版:后台加载数据之处理CursorLoader的查询结果
- ASP.NET MVC 扩展HtmlHelper类为 js ,css 资源文件添加版本号