广告
返回顶部
首页 > 资讯 > 精选 >Java怎么利用广度优先搜索实现抓牛问题
  • 386
分享到

Java怎么利用广度优先搜索实现抓牛问题

2023-07-02 13:07:06 386人浏览 独家记忆
摘要

本篇内容介绍了“Java怎么利用广度优先搜索实现抓牛问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、原问题二、输入和输出输入两个数,第

本篇内容介绍了“Java怎么利用广度优先搜索实现抓牛问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、原问题

Java怎么利用广度优先搜索实现抓牛问题

二、输入和输出

输入

两个数,第1个数代表农夫的位置,第2个数代表牛的位置

输出

农夫抓牛的最小步数

三、输入和输出样例

输入样例

5 17

输出样例

4

四、代码

package graph.poj3278; import java.util.LinkedList;import java.util.Queue;import java.util.Scanner; public class POJ3278BFS {    static final int MAXN = 100009;    static boolean vis[] = new boolean[MAXN];    static int d[] = new int[MAXN];    static int n, k;     public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        n = scanner.nextInt();        k = scanner.nextInt();         if (k <= n) {            System.out.println(n - k);            return;        }        solve();    }     static void solve() {        Queue<Integer> q = new LinkedList<>();        vis[n] = true;        d[n] = 0;        q.add(n);        while (!q.isEmpty()) {            int u = q.peek();            q.poll();            if (u == k) {                System.out.println(d[k]);                return;            }            int x;            x = u + 1;            if (x >= 0 && x <= 100000 && !vis[x]) { // 向前走一步                d[x] = d[u] + 1;                vis[x] = true;                q.add(x);            }            x = u - 1;            if (x >= 0 && x <= 100000 && !vis[x]) { // 向后走一步                d[x] = d[u] + 1;                vis[x] = true;                q.add(x);            }            x = u * 2;            if (x >= 0 && x <= 100000 && !vis[x]) { // 跳着走                d[x] = d[u] + 1;                vis[x] = true;                q.add(x);            }        }    }}

五、测试

绿色为输入,白色为输出。

Java怎么利用广度优先搜索实现抓牛问题

“Java怎么利用广度优先搜索实现抓牛问题”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Java怎么利用广度优先搜索实现抓牛问题

本文链接: https://www.lsjlt.com/news/342235.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java利用广度优先搜索实现抓牛问题
    目录一、原问题链接二、输入和输出三、输入和输出样例四、代码五、测试一、原问题链接 http://poj.org/problemid=3278 二、输入和输出 1.输入 两个数,第1...
    99+
    2022-11-13
  • Java怎么利用广度优先搜索实现抓牛问题
    本篇内容介绍了“Java怎么利用广度优先搜索实现抓牛问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、原问题二、输入和输出输入两个数,第...
    99+
    2023-07-02
  • Python怎么实现图的广度和深度优先路径搜索算法
    本篇内容主要讲解“Python怎么实现图的广度和深度优先路径搜索算法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么实现图的广度和深度优先路径搜索算法”吧!前言图是一种抽象数据结构...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作