关注
n,m = map(int,input().split())
nums = []
for i in range(m):
nums.append(int(input()))
class sol:
def __init__(self):
#
self.seen = set() def dfs(self,nums,n,m,pos,step):
# 停止条件:如果是最后一次看时间后走的
if step == m:
if pos not in self.seen:
self.seen.add(pos)
return
# 剪枝 保证始终在坐标轴范围递归
if 1 <= pos + nums[step] <= n:
a = pos + nums[step]
self.dfs(nums,n,m,a,step+1)
if 1 <= pos - nums[step] <= n:
b = pos - nums[step]
self.dfs(nums,n,m,b,step+1)
return
def main(self):
# 以坐标轴的每个起点为出发点进行递归
for pos in range(1,n+1):
self.dfs(nums,n,m,pos,0)
print(len(self.seen))
test = sol()
test.main() 基本思想:DFS + 剪枝 以坐标轴的每个起点为出发点进行递归,
在坐标轴范围内以不同行走方向不断遍历行走,直到最后一次看时间之后
查看原帖
点赞 评论
相关推荐
01-22 16:43
西安理工大学 售前产品 点赞 评论 收藏
分享
01-04 20:58
淮北师范大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 在大厂上班是一种什么样的体验 #
7455次浏览 106人参与
# 机械人避雷的岗位/公司 #
42202次浏览 281人参与
# 程序员找工作至少要刷多少题? #
13532次浏览 204人参与
# 12306一秒售罄,你抢到回家的票了吗? #
1356次浏览 40人参与
# 我现在比当时_,你想录用我吗 #
6237次浏览 89人参与
# 过年最难忘的一件事 #
23101次浏览 174人参与
# 你最满意的offer薪资是哪家公司? #
69561次浏览 349人参与
# 为了减少AI幻觉,你注入过哪些设定? #
2887次浏览 98人参与
# 牛客AI体验站 #
5103次浏览 154人参与
# AI Coding的使用心得 #
3683次浏览 91人参与
# 找工作的破防时刻 #
253293次浏览 1962人参与
# 刚入职的你踩过哪些坑 #
5578次浏览 113人参与
# 论秋招对个人心气的改变 #
7606次浏览 132人参与
# 一张图晒一下你的AI员工 #
3807次浏览 82人参与
# 关于春招/暑期实习,你想知道哪些信息? #
5668次浏览 98人参与
# 黄金这个事上,你学到了什么 #
1393次浏览 41人参与
# 机械人你知道哪些单休企业 #
85576次浏览 428人参与
# 程序员能干到多少岁? #
7069次浏览 105人参与
# 晒晒你司的新年福利 #
5776次浏览 89人参与
# 关于提前批我想问 #
267684次浏览 2308人参与
OPPO公司福利 1101人发布
查看5道真题和解析