[ACM] hdu 2717 Catch That Cow (BFS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2717
参考链接:http://blog.csdn.net/sr_19930829/article/details/26398223
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
static int N,K;
static int len=100000;
static int[] hash = new int[len+10];
static boolean[] vis = new boolean[len+10];
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
K = sc.nextInt();
if(N==K){
System.out.println(0);
}else
{
bfs();
System.out.println(hash[K]);
}
}
private static void bfs() {
// TODO Auto-generated method stub
Queue<node> queue = new LinkedList<node>();
node n = new node(N);
queue.offer(n);
vis[N] = true;
hash[N] = 0;
while(!queue.isEmpty()){
node temp = queue.poll(); //queue.poll() 获取并移除队头
int num = temp.getNum();
if(num+1==K||num-1==K||num*2==K){//找到
hash[K]=hash[num]+1;
break;
}
if(num-1>=0&&!vis[num-1]){
node m = new node(num-1);
queue.offer(m);
vis[num-1]=true;
hash[num-1]=hash[num]+1;
}
if(num+1<=len&&!vis[num+1]){
node m = new node(num+1);
queue.offer(m);
vis[num+1] = true;
hash[num+1] = hash[num]+1;
}
if(num*2<=len&&!vis[num*2]){
node m = new node(num*2);
queue.offer(m);
vis[num*2]=true;
hash[num*2]=hash[num]+1;
}
}
}
public static class node{
int num;
public node(int num){
this.num = num;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
}
没有AC不知道为什么。

浙公网安备 33010602011771号