首页 > 其他 > 详细

回溯——oj1172 健康的荷斯坦奶牛

时间:2017-02-14 15:21:36      阅读:223      评论:0      收藏:0      [点我收藏+]

  花了一个多小时的时间搞定了这道题= =

  给出题面:

技术分享

  很明显这道题是一道搜索的题,我用的是dfs+回溯。暴力的方法是设置一个计数器,如果满足条件时就进入下一重dfs,每次都判断是否达到要求,如果所用的肥料数最小的话就更新数组,这样的话可以拿下80%的数据,但仔细算算,如果是极限数据的话,需要进行15重dfs,每重都有一个二重循环,这样的话时间复杂度大概是(15*15)^15,很明显这样会超时,这时候需要做优化。

  仔细想想,每重dfs都是从数组的起点开始搜索,但实际上搜索的时候做了许多次重复,所以用了大部分的时间做了重复的操作,那具体应该怎么办呢?很显然,因为每次都是从数组起点开始搜索,所以上一重dfs中所搜索到的数的之前的数都是做的重复操作,那么可以建立一个指针,指针指向上一重dfs中搜索到的位置,在本次搜索中从指针的下一位开始搜索即可。

  此外还有一点可优化:因为要求输出使用饲料的最小数量,所以可以进行特判,当搜索的次数大于已经搜索到的最小次数时return即可。

回溯——oj1172 健康的荷斯坦奶牛

原文:http://www.cnblogs.com/hinanawitenshi/p/6397300.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!