CSU 1660 搜索 在图中寻找一个长度为K的环

题目的大概意思就是在给出的图里面寻找一个长度为K的环。。。      想了一想,肯定是用DFS,然后就考虑实现,可是以什么作为参数呢,以下是我考虑不恰当的地方:      我考虑的DFS参数有3个,第一个是当前的位置,还有一个是余剩的步数(我想到最多只能够走K次),还有一个是此次搜索的起点。      剪枝:跳过度为1的点,因为度为1的点不可能处于环上      我自己也认识到,这
摘要由CSDN通过智能技术生成

      题目的大概意思就是在给出的图里面寻找一个长度为K的环。。。

      想了一想,肯定是用DFS,然后就考虑实现,可是以什么作为参数呢,以下是我考虑不恰当的地方:

      我考虑的DFS参数有3个,第一个是当前的位置,还有一个是余剩的步数(我想到最多只能够走K次),还有一个是此次搜索的起点。

      剪枝:跳过度为1的点,因为度为1的点不可能处于环上

      我自己也认识到,这样的搜索有很大的重复性,比方说我从一个节点A向下寻找,在K步之内没有找到,接下来我会去在A+1处调用DFS,假若A和A+1相邻,此时所做的很大一部分工作是重复的,因为从A向A+1这边搜索的时候,已经搜索过一部分了,现在再搜索也仅仅是比原来多走一步而已。我想把走过的步数记录下来,可是没有想到好的办法,结果TLE到比赛结束。

  比赛完之后去看题解发现自己没法实现的东西轻易的就可以实现。。。不得不说有点遗憾?

  这个DFS里面有三个参数,第一个是当前的节点,第二个是离源节点的步数,第三个是父节点(也就是从哪边过来的)

  在DFS搜索里面用来表示是否访问过的VIS数组来表示这个是离调用点有多少步,访问到某一个点P时,假若P已经访问过了࿰

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值