catch that cow(简单bFS)抓牛 POJ
来源:互联网 发布:深圳市金软网络骗局 编辑:程序博客网 时间:2024/06/05 20:50
题目大意:在一个坐标轴上。有一个农夫准备追牛。可以向前,向后,也可以坐标加倍。求最少几步可以追上牛。
思路:求最短时间,应该使用bfs,使用sign标记这个点是否走过。bfs有三个方向,最后输出步数即可
#include<stdio.h>#include<string.h>struct node{ int s; int stage;}queue[100005];//队列int sign[100005];int check(int k){//判断这个点能否走if(k>=0&&k<=100000&&!sign[k])return 1;return 0; }int main(){ int n,k; while(scanf("%d%d",&n,&k)!=EOF) { memset(sign,0,sizeof(sign));//初始化 int head=0,tail=1; struct node r; sign[n]=1; queue[head].s=n; queue[head].stage=0;//起点 // printf("%d %d\n",tail,head); while(head<tail) { r=queue[head]; int temp; temp=r.s+1; //前进一步 if(check(temp)) { queue[tail].stage=r.stage+1; queue[tail].s=temp; sign[temp]=1; if(queue[tail].s==k)//判断是否到达终点 break; tail++; // printf("%d %d\n",tail,head); } temp=r.s-1;//后退一步 if(check(temp)) { queue[tail].stage=r.stage+1; queue[tail].s=temp; sign[temp]=1; if(queue[tail].s==k) break;tail++; } temp=r.s*2;//步数×2 if(check(temp)) { queue[tail].stage=r.stage+1; queue[tail].s=temp; sign[temp]=1; if(queue[tail].s==k) break;tail++; } head++; } int i; //for(i=0;i<10;i++) printf("%d\n",queue[tail].stage);//输出最短步数 } return 0;}
0 0
- catch that cow(简单bFS)抓牛 POJ
- poj Catch That Cow bfs
- BFS poj Catch that cow
- Catch That Cow 简单BFS
- Catch That Cow(简单BFS)
- POJ 3278 Catch That Cow(简单BFS)
- POJ 3278 Catch That Cow (简单BFS)
- poj 3278 Catch That Cow BFS
- poj 3278 Catch That Cow BFS
- POJ 3278 Catch That Cow BFS
- poj 3278 bfs(Catch That Cow)
- poj 3278 Catch That Cow(bfs)
- POJ 3278 Catch That Cow bfs
- poj Catch That Cow (Bfs)
- POJ 3278 Catch That Cow 【bfs+队列】
- POJ 3278 Catch That Cow (BFS)
- POJ 3278 Catch That Cow(BFS)
- poj 3278 Catch That Cow bfs
- 【matlab】设置绘图的大小,字号,线宽,字体--按投稿要求
- 对浏览器内核的理解?
- Linux下的那些环境变量
- Delphi常用系统函数总结
- [a, b]区间内找到一些数满足可以被一个整数c整除
- catch that cow(简单bFS)抓牛 POJ
- amlogic平台android uboot中添加i2c设备实现i2c的读写
- LightOJ
- 水的问题之half类型
- CNN笔记:通俗理解卷积神经网络
- 5.2号学习日志
- 操作系统原理读书笔记之进程互斥
- 序列化二叉树。。。int*,char*
- html5有哪些新特性?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?