小慕正在参与一个代码复杂度分析项目,他需要计算以下三份代码的。 第1份代码:
def find_paths(maze, x, y, path=None, visited=None):
if path is None:
path = []
if visited is None:
visited = set()
rows, cols = len(maze), len(maze[0])
# 检查是否到达终点
if x == rows - 1 and y == cols - 1:
return [path + [(x, y)]]
# 标记当前点为已访问
visited.add((x, y))
path.append((x, y))
# 定义方向:右、下、左、上
directions = [(0, 1), (1, 0), (0, -1), (-1, 0)]
paths = []
for dx, dy in directions:
nx, ny = x + dx, y + dy
if 0 <= nx < rows and 0 <= ny < cols and (nx, ny) not in visited and maze[nx][ny] == 0:
paths.extend(find_paths(maze, nx, ny, path[:], visited.copy()))
return paths第2份代码:
def coin_change(coins, amount):
# dp[i] 表示组成金额 i 所需的最少硬币数
dp = [float('inf')] * (amount + 1)
dp[0] = 0 # 组成金额 0 不需要任何硬币
for coin in coins:
for i in range(coin, amount + 1):
dp[i] = min(dp[i], dp[i - coin] + 1)
return dp[amount] if dp[amount] != float('inf') else -1第3份代码:
def validate_and_process_parentheses(s):
stack = [] # 用于存储索引
matched = [-1] * len(s) # 标记每个位置是否匹配
for i, char in enumerate(s):
if char == '(':
stack.append(i)
elif char == ')' and stack:
match_index = stack.pop()
matched[match_index] = i # 记录匹配的位置
matched[i] = match_index
is_balanced = all(matched[i] != -1 for i in range(len(s)) if s[i] in "()")
# 寻找最长提示:带虚线的词点一下有通俗解释。
输入描述
无
输出描述
打印三行整数分别表示它们的圈复杂度,例如: ``` 100 1000 10000 ``` 对于这道题目,如果使用python代码打印那就是: ```py print(100) print(1000) print(10000) ```
时间限制 1000 ms · 内存限制 128 MB