POJ T3278 Catch That Cow
POJ T3278 Catch That Cow 题解: 水题,Bfs裸题,变成一维更简单,走的方向只要判断下为2时是乘操作就行了...... 代码:#include<cstdio>#include<iostream>#include<cstring>
·
POJ T3278 Catch That Cow
题解:
水题,Bfs裸题,变成一维更简单,走的方向只要判断下为2时是乘操作就行了......
代码:
#include<cstdio>
#include<iostream>
#include<cstring>
#include<queue>
#define maxn 100000
using namespace std;
int n,k;
bool vis[maxn];
int mov[3] = {-1,1,2}; //三种走法
struct Node{
int x,st;
}now,nex;
bool charge(int x){
if(x < 0 || x > maxn || vis[x]) //边界判断
return false;
return true;
}
int Bfs(int st){
now.x = n;
now.st = st;
queue<Node> Q;
Q.push(now);
while(!Q.empty()){
now = Q.front();
Q.pop();
if(now.x == k)
return now.st;
for(int i = 0; i < 3; ++i){
if(i == 2)
nex.x = now.x * mov[i]; //判断i == 2时为乘操作
else
nex.x = now.x + mov[i];
if(charge(nex.x)){
nex.st = now.st + 1;
vis[nex.x] = true; //走过的点要标记掉
Q.push(nex);
}
}
}
}
int main(){
while(~scanf("%d%d",&n,&k)){
memset(vis,false,sizeof(vis));
printf("%d\n",Bfs(0));
}
return 0;
}
更多推荐
已为社区贡献1条内容
所有评论(0)