欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java利用廣度優(yōu)先搜索實現(xiàn)抓牛問題

 更新時間:2022年06月29日 09:17:49   作者:chengqiuming  
廣度優(yōu)先搜索是最簡便的圖的搜索算法之一,這一算法也是很多重要的圖的算法的原型。本文將利用廣度優(yōu)先搜索實現(xiàn)抓牛問題,感興趣的可以了解下

一、原問題鏈接

http://poj.org/problem?id=3278

二、輸入和輸出

1.輸入

兩個數(shù),第1個數(shù)代表農夫的位置,第2個數(shù)代表牛的位置

2.輸出

農夫抓牛的最小步數(shù)

三、輸入和輸出樣例

1.輸入樣例

5 17

2.輸出樣例

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利用廣度優(yōu)先搜索實現(xiàn)抓牛問題的文章就介紹到這了,更多相關Java廣度優(yōu)先搜索內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java concurrency集合之ArrayBlockingQueue_動力節(jié)點Java學院整理

    Java concurrency集合之ArrayBlockingQueue_動力節(jié)點Java學院整理

    ArrayBlockingQueue是數(shù)組實現(xiàn)的線程安全的有界的阻塞隊列。下面通過本文給大家介紹Java concurrency集合之ArrayBlockingQueue的相關知識,感興趣的朋友一起看看吧
    2017-06-06
  • MyBatis中映射文件的使用案例代碼

    MyBatis中映射文件的使用案例代碼

    這篇文章主要介紹了MyBatis中映射文件的使用,本文結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • SpringBoot短鏈接跳轉的代碼實現(xiàn)

    SpringBoot短鏈接跳轉的代碼實現(xiàn)

    短鏈跳轉是一種通過將長鏈接轉換為短鏈接的方式,以便在互聯(lián)網(wǎng)上進行鏈接共享和傳播的技術,短鏈將原始長鏈接通過特定算法轉換為較短的鏈接,使得它更容易分享、傳播和展示,本文給大家介紹了SpringBoot短鏈接跳轉的代碼實現(xiàn),需要的朋友可以參考下
    2024-03-03
  • Java之SpringBoot定時任務案例講解

    Java之SpringBoot定時任務案例講解

    這篇文章主要介紹了Java之SpringBoot定時任務案例講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • Java中JFrame實現(xiàn)無邊框無標題方法

    Java中JFrame實現(xiàn)無邊框無標題方法

    這篇文章主要介紹了Java中JFrame實現(xiàn)無邊框無標題方法,本文直接給出代碼實例,需要的朋友可以參考下
    2015-05-05
  • 關于FastJson?long?溢出問題的小結

    關于FastJson?long?溢出問題的小結

    這篇文章主要介紹了關于FastJson?long?溢出問題的小結,具有很好的參考價值,希望對大家有所幫助。
    2022-01-01
  • Java synchronized最細講解

    Java synchronized最細講解

    synchronized是Java語言的關鍵字,當它用來修飾一個方法或者一個代碼塊的時候,能夠保證在同一時刻最多只有一個線程執(zhí)行該段代碼。本文給大家介紹java中 synchronized的用法,對本文感興趣的朋友一起看看吧
    2021-09-09
  • java在pdf中生成表格的方法

    java在pdf中生成表格的方法

    這篇文章主要介紹了java在pdf中生成表格的方法,需要的朋友可以參考下
    2015-11-11
  • Java舉例講解分治算法思想

    Java舉例講解分治算法思想

    分治算法的基本思想是將一個規(guī)模為N的問題分解為K個規(guī)模較小的子問題,這些子問題相互獨立且與原問題性質相同。求出子問題的解,就可得到原問題的解,本篇文章我們就用分治算法來實現(xiàn)歸并排序快速排序以及二分搜索算法
    2022-04-04
  • 打印Java程序的線程棧信息方式

    打印Java程序的線程棧信息方式

    這篇文章主要介紹了打印Java程序的線程棧信息方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評論