这是我第一次遇到的BFS问题,因为要学习编程,F同学帮我找了一些搜索的题目,做到这个问题的时候感觉无法使用DFS来写,因为他可能是个无底洞。因为当时没有学习过BFS,所以网上搜索了下发现了也是一位第一次碰到BFS题目就是C - Catch That Cow的博主,学习了他的代码,他的代码解释很清楚。

  感谢博主,传送门http://blog.csdn.net/weiwanshu/article/details/45770537

  题目的意思是农民的牛丢了,农民不知道牛在哪里,只能一点一点的去寻找,已知的是农民和牛在一条直线上,农民需要找到他的牛。农民有两种行走方法,一种是走,一分钟可以前进1个单位也可以后退1个单位,第二种方法是跳跃,每次只能向前跳,跳的位置是当前位置的2倍。给出农民和牛的位置求出最快多久找到牛。

样例

Sample Input
5 17
Sample Output
4

代码

#include<stdio.h>
#include<string.h>
struct A {int state;int step;
}queue[100001];
int n,k;
int bfs(int start);
int book[100001];
int main(){scanf("%d%d",&n,&k);memset(book,0,sizeof(book));if(n>=k) printf("%d",n-k);else printf("%d",bfs(n));
}
int bfs(int start){struct A temp;int head=0;int rear=0;queue[head].state=start;queue[rear++].step=0;book[start]=1; while(head<rear){temp=queue[head++];if(temp.state+1>0&&temp.state+1<100001&&book[temp.state+1]==0){queue[rear].state=temp.state+1;queue[rear++].step=temp.step+1;book[temp.state+1]=1;if(temp.state+1==k)return temp.step+1;         } if(temp.state-1>0&&temp.state-1<100001&&book[temp.state-1]==0){queue[rear].state=temp.state-1;queue[rear++].step=temp.step+1;book[temp.state-1]=1;if(temp.state-1==k)return temp.step+1;         } if(temp.state*2>0&&temp.state*2<100001&&book[temp.state*2]==0){queue[rear].state=temp.state*2;queue[rear++].step=temp.step+1;book[temp.state*2]=1;if(temp.state*2==k)return temp.step+1;         } }return 0;
}

转载于:https://www.cnblogs.com/lvcoding/p/6557453.html

C - Catch That Cow相关推荐

  1. C - Catch That Cow POJ - 3278

    C - Catch That Cow POJ - 3278 首先是大暴搜+最优化剪枝(当当前搜索情况不如已有答案优时,返回) #include<cstdio> #include<al ...

  2. POJ 3278 Catch That Cow

    Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 35043   Accepted: 10800 ...

  3. POJ 3278 Catch That Cow

    Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 30924   Accepted: 9536 D ...

  4. POJ 3278 Catch That Cow BFS

    Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 32071   Accepted: 9866 D ...

  5. POJ 3278 Catch That Cow(BFS)

    题目网址:http://poj.org/problem?id=3278 题目: Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Tot ...

  6. 牛客假日团队赛5 L Catch That Cow HDU 2717 (BFS)

    链接:https://ac.nowcoder.com/acm/contest/984/L 来源:牛客网 Catch That Cow 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 3 ...

  7. POJ3278——Catch That Cow

    Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 114140   Accepted: 35715 ...

  8. 动态规划训练13 [Catch That Cow poj3278]

    Catch That Cow POJ - 3278 这道题我看大家用的方法都是bfs搜索,为什么在我看来这就是一个动态规划的题目啊啊啊啊啊啊啊 dp[x]表示从N出发到x所需要的最小时间 那么得到如下 ...

  9. poj 3278 catch that cow BFS(基础水)

    Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 61826   Accepted: 19329 ...

  10. Catch That Cow【广搜】

    Catch That Cow POJ - 3278 Farmer John has been informed of the location of a fugitive cow and wants ...

最新文章

  1. java怎么将字符串反序输出_对String字符串进行反序输出
  2. C++程序的多文件组成
  3. 设计模式学习----装饰器模式
  4. action怎么获得 ajax date参数_ajax()gt;load()事件的新用法!!!
  5. java.close用法_void close()
  6. RedisTemplate常用集合使用说明-opsForZSet(六)
  7. java 银行卡号格式化_JS银行卡号格式化 - JavaScript常用效果 - Front-End - NalanXue's Blog...
  8. 十个优衣库仓库理货员,只有一个能留下,机器已经上岗了
  9. atomQQ 笔记 之 列表元素的异步加载
  10. spring的历史与设计哲学
  11. zynq开发系列4:EMIO连接按键控制MIO连接的灯
  12. jsp主板 jtp_HPlaserjtp1008不开机故障的检测与维修流程
  13. DS18B20温度传感器c语言编程,单片机中使用DS18B20温度传感器C语言程序(参考7)(DS18B20 测...
  14. 阿里云mysql空间不足_阿里云数据库MySQL系统文件导致实例空间满的解决办法
  15. linux tar zcxf,tar/gzip/zip文件打包、压缩命令
  16. 一般网站需要多少流量多大空间才够用
  17. 真Unity3d_分享一个攻击连招的简单实现
  18. 虚拟机ipv4和6都没访问权限_ipv4和ipv6无网络访问权限 win10
  19. 计蒜客题解——T1769:最大岛屿
  20. 兰州营区武警官兵“浴雪”炼精兵

热门文章

  1. 6 自定义控件之屏蔽控件的设计时属性
  2. 设计模式的七大设计原则:其四:里氏替换原则
  3. 如何使用apiPOST进行模拟发送get、post、delete、put请求(支持文件上传)
  4. 03-07 APP 控件交互
  5. 软件测试模型-敏捷模型
  6. mpvue 调起子组件的方法_牢记 | 智鹏五金机电设备这些方法的使用更安全!
  7. android bitmap 加边框,Android 给圆角的Bitmap加边框
  8. 精通HTML5+CSS3需要学什么?
  9. 数据和access数据的区别_Access处理数据
  10. latch.await java有什么作用,Android系统。 Countdownlatch.await不起作用