`
200830740306
  • 浏览: 105770 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Poj3278 广度优先搜索

阅读更多
import java.io.BufferedInputStream;
import java.util.LinkedList;
import java.util.Scanner;

/**
 * @author NC
 * Poj3278
 * 简单bfs
 */
public class Main {

    public static final int MAX = 200000;

    public static void main(String[] args) {

        Scanner scan = new Scanner(new BufferedInputStream(System.in));
        if (scan.hasNext()) {
            int n = scan.nextInt();
            int k = scan.nextInt();
            System.out.println(catchTheCow(n, k));
        }
    }

    public static int catchTheCow(int n, int k) {
        //找到
        if (n == k) {
            return 0;
        }
        LinkedList<Integer> queue = new LinkedList();
        boolean[] visited = new boolean[MAX + 5];
        int[] minutes = new int[MAX + 5];
        visited[n] = true;
        queue.add(n);
        while (!queue.isEmpty()) {
            int current = queue.removeFirst();
            for (int i = 0; i < 3; i++) {
                int next = current;
                //遍历3个方向
                if (i == 0) {
                    next++;
                } else if (i == 1) {
                    next--;
                } else if (i == 2) {
                    next <<= 1;
                }
                if (next < 0 || next > MAX) {
                    continue;
                }
                //剪枝
                if (!visited[next]) {
                    queue.add(next);
                    visited[next] = true;
                    minutes[next] = minutes[current] + 1;
                }
                //找到
                if (next == k) {
                    return minutes[k];
                }
            }
        }

        return 0;
    }
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics