牛客16502 螺旋矩阵
鏈接:https://ac.nowcoder.com/acm/problem/16502
來源:??途W
題目描述
一個 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 螺旋矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win32 多文档多视图
- 下一篇: 蓝桥杯 历届试题 小数第n位