91精产品自偷自偷综合官网版下载-91精产品自偷自偷综合下-91精品-91精品91久久久-91精品成人-91精品成人www

網站建設資訊

NEWS

網站建設資訊

廣度優先搜索代碼java 廣度優先搜索代碼

廣度優先搜索

這個是很復雜的

在賓縣等地區,都構建了全面的區域性戰略布局,加強發展的系統性、市場前瞻性、產品創新能力,以專注、極致的服務理念,為客戶提供成都網站建設、網站制作 網站設計制作按需網站設計,公司網站建設,企業網站建設,高端網站設計,成都全網營銷推廣,成都外貿網站建設公司,賓縣網站建設費用合理。

你可以百度這個算法

然后套進去寫代碼

LeetCode 力扣官方題解 - 1020. 飛地的數量

題目描述

給你一個大小為 m x n 的二進制矩陣 grid,其中 0 表示一個海洋單元格、1 表示一個陸地單元格。

一次 移動 是指從一個陸地單元格走到另一個相鄰(上、下、左、右)的陸地單元格或跨過 grid 的邊界。

返回網格中 無法 在任意次數的移動中離開網格邊界的陸地單元格的數量。

示例 1:

示例 2:

提示:

根據飛地的定義,如果從一個陸地單元格出發無法移動到網格邊界,則這個陸地單元格是飛地。因此可以將所有陸地單元格分成兩類:第一類陸地單元格和網格邊界相連,這些陸地單元格不是飛地;第二類陸地單元格不和網格邊界相連,這些陸地單元格是飛地。

我們可以從網格邊界上的每個陸地單元格開始深度優先搜索,遍歷完邊界之后,所有和網格邊界相連的陸地單元格就都被訪問過了。然后遍歷整個網格,如果網格中的一個陸地單元格沒有被訪問過,則該陸地單元格不和網格的邊界相連,是飛地。

代碼實現時,由于網格邊界上的單元格一定不是飛地,因此遍歷網格統計飛地的數量時只需要遍歷不在網格邊界上的單元格。

代碼

Java

C#

C++

C

Python3

Golang

JavaScript

復雜度分析

也可以通過廣度優先搜索判斷每個陸地單元格是否和網格邊界相連。

首先從網格邊界上的每個陸地單元格開始廣度優先搜索,訪問所有和網格邊界相連的陸地單元格,然后遍歷整個網格,統計飛地的數量。

代碼

Java

C#

C++

C

Python3

Golang

JavaScript

復雜度分析

除了深度優先搜索和廣度優先搜索的方法以外,也可以使用并查集判斷每個陸地單元格是否和網格邊界相連。

并查集的核心思想是計算網格中的每個陸地單元格所在的連通分量。對于網格邊界上的每個陸地單元格,其所在的連通分量中的所有陸地單元格都不是飛地。如果一個陸地單元格所在的連通分量不同于任何一個網格邊界上的陸地單元格所在的連通分量,則該陸地單元格是飛地。

并查集的做法是,遍歷整個網格,對于網格中的每個陸地單元格,將其與所有相鄰的陸地單元格做合并操作。由于需要判斷每個陸地單元格所在的連通分量是否和網格邊界相連,因此并查集還需要記錄每個單元格是否和網格邊界相連的信息,在合并操作時更新該信息。

在遍歷網格完成并查集的合并操作之后,再次遍歷整個網格,通過并查集中的信息判斷每個陸地單元格是否和網格邊界相連,統計飛地的數量。

代碼

Java

C#

C++

C

Python3

Golang

JavaScript

復雜度分析

BY /

本文作者:力扣

java如何實現 深度優先 廣度優先

下面是我修改了滴源碼,是基于一張簡單的地圖,在地圖上搜索目的節點,依次用深度優先、廣度優先、Dijkstra算法實現。

import java.util.ArrayList;

import java.util.HashMap;

import java.util.LinkedList;

import java.util.PriorityQueue;

import java.util.Stack;

/**

*

* @author yinzhuo

*

*/

public class Arithmatic {

boolean flag = true;

// 一張地圖

static int[][] map = new int[][]// 地圖數組

{

{ 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 },

{ 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 },

{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0 },

{ 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 },

{ 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 },

{ 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 },

{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 },

{ 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0 },

{ 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0 },

{ 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0 },

{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0 },

{ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0 },

{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0 },

{ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0 },

{ 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } };

Java連連看代碼。 廣度優先搜索算法實現,最小拐彎數,高手留下qq。

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class lianliankan implements ActionListener

{

JFrame mainFrame; //主面板

Container thisContainer;

JPanel centerPanel,southPanel,northPanel; //子面板

JButton diamondsButton[][] = new JButton[6][5];//游戲按鈕數組

JButton exitButton,resetButton,newlyButton; //退出,重列,重新開始按鈕 JLabel fractionLable=new JLabel("0"); //分數標簽

JButton firstButton,secondButton; //分別記錄兩次被選中的按鈕

int grid[][] = new int[8][7];//儲存游戲按鈕位置

static boolean pressInformation=false; //判斷是否有按鈕被選中

int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戲按鈕的位置坐標 int i,j,k,n;//消除方法控制

public void init(){

mainFrame=new JFrame("JKJ連連看");

thisContainer = mainFrame.getContentPane();

thisContainer.setLayout(new BorderLayout());

centerPanel=new JPanel();

southPanel=new JPanel();

northPanel=new JPanel();

thisContainer.add(centerPanel,"Center");

thisContainer.add(southPanel,"South");

thisContainer.add(northPanel,"North");

centerPanel.setLayout(new GridLayout(6,5));

for(int cols = 0;cols 6;cols++){

for(int rows = 0;rows 5;rows++ ){

diamondsButton[cols][rows]=new JButton(String.valueOf(grid[cols+1][rows+1])); diamondsButton[cols][rows].addActionListener(this);

centerPanel.add(diamondsButton[cols][rows]);

}

}

exitButton=new JButton("退出");

exitButton.addActionListener(this);

resetButton=new JButton("重列");

resetButton.addActionListener(this);

newlyButton=new JButton("再來一局");

newlyButton.addActionListener(this);

southPanel.add(exitButton);

southPanel.add(resetButton);

1/8頁

southPanel.add(newlyButton);

fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())));

northPanel.add(fractionLable);

mainFrame.setBounds(280,100,500,450);

mainFrame.setVisible(true);

}

public void randomBuild() {

int randoms,cols,rows;

for(int twins=1;twins=15;twins++) {

randoms=(int)(Math.random()*25+1);

for(int alike=1;alike=2;alike++) {

cols=(int)(Math.random()*6+1);

rows=(int)(Math.random()*5+1);

while(grid[cols][rows]!=0) {

cols=(int)(Math.random()*6+1);

rows=

鄰接表做深度優先遍歷和廣度優先遍歷的代碼

3、廣度優先搜索算法

(1)鄰接表表示圖的廣度優先搜索算法

void BFS(ALGraph*G,int k)

{// 以vk為源點對用鄰接表表示的圖G進行廣度優先搜索

int i;

CirQueue Q; //須將隊列定義中DataType改為int

EdgeNode *p;

InitQueue(Q);//隊列初始化

//訪問源點vk

printf("visit vertex:%e",G-adjlist[k].vertex);

visited[k]=TRUE;

EnQueue(Q,k);//vk已訪問,將其人隊。(實際上是將其序號人隊)

while(!QueueEmpty(Q)){//隊非空則執行

i=DeQueue(Q); //相當于vi出隊

p=G-adjlist[i].firstedge; //取vi的邊表頭指針

while(p){//依次搜索vi的鄰接點vj(令p-adjvex=j)

if(!visited[p-adivex]){ //若vj未訪問過

printf("visitvertex:%c",C-adjlistlp-adjvex].vertex); //訪問vj

visited[p-adjvex]=TRUE;

EnQueue(Q,p-adjvex);//訪問過的vj人隊

}//endif

p=p-next;//找vi的下一鄰接點

}//endwhile

}//endwhile

}//end of BFS

(2)鄰接矩陣表示的圖的廣度優先搜索算法

void BFSM(MGraph *G,int k)

{以vk為源點對用鄰接矩陣表示的圖G進行廣度優先搜索

int i,j;

CirQueue Q;

InitQueue(Q);

printf("visit vertex:%c",G-vexs[k]); //訪問源點vk

visited[k]=TRUE;

EnQueue(Q,k);

while(!QueueEmpty(Q)){

i=DeQueue(Q); //vi出隊

for(j=0;jG-n;j++)//依次搜索vi的鄰接點vj

if(G-edges[i][j]==1!visited[j]){//vi未訪問

printf("visit vertex:%c",G-vexs[j]);//訪問vi

visited[j]=TRUE;

EnQueue(Q,j);//訪問過的vi人隊

}

}//endwhile

}//BFSM


網頁名稱:廣度優先搜索代碼java 廣度優先搜索代碼
URL標題:http://www.yuzhuanjia.cn/article/docgoei.html
主站蜘蛛池模板: 99re9精品视频在线 | 一区二区不卡免费视频 | 波多野结衣家庭教师视频 | 国产av亚洲aⅴ一区二区小说最新章节列表 | 9i精品视频 | 91女神爱丝袜vivian在线观看 | 第一区第二区 | 爱豆传媒MV视频在线观看 | 97人妻中文字幕无码系列 | 91天天操 | 午夜福利片在线观看 | 成人免费在线视频 | av无码精品放毛片 | 91精品国产福利在线观看麻 | 99久久婷婷国产 | 91精品国产爱久久久久久 | 4日本私人vps生活大片 | 第四色主页 | 成人免费视频一 | 99精品综合网站 | 丰满少妇激情进入高清播放 | 91久久久久久国产精品 | av无码动漫一区二区精品 | 91午夜在线观看免费 | 午夜一级韩国欧美日本国产 | 97无码免费人妻 | 成人黄18免费网站 | 高清无码中文字幕视频 | av色综合| 91欧美激情欧美性爱综合 | 97精品人妻酒店综合大胆无码 | 午夜网站视频 | 国产91对白在线播放边 | 午夜福利高清精品久久 | 午夜日韩欧美电影 | 91精品国产9 | 荡公乱妇第1章方情全文免费 | av高清网址在线观看 | av秋霞电影在线播 | 91精品啪在线观看国产91蜜桃 | 91综合久久久久婷婷 |