真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

深度優(yōu)先java代碼 深度優(yōu)先使用什么數(shù)據(jù)結(jié)構(gòu)

求代碼,java實(shí)驗(yàn),題目如圖

import?java.util.Scanner;

為隨縣等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及隨縣網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)、做網(wǎng)站、隨縣網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

import?java.util.Stack;

public?class?DFS

{

//?存儲(chǔ)節(jié)點(diǎn)信息

private?char[]?vertices;

//?存儲(chǔ)邊信息(鄰接矩陣)

private?int[][]?arcs;

//?圖的節(jié)點(diǎn)數(shù)

private?int?vexnum;

//?記錄節(jié)點(diǎn)是否已被遍歷

private?boolean[]?visited;

//?初始化

public?DFS(int?n)

{

vexnum?=?n;

vertices?=?new?char[n];

arcs?=?new?int[n][n];

visited?=?new?boolean[n];

for(int?i?=?0;?i??vexnum;?i++)

{

for(int?j?=?0;?j??vexnum;?j++)

{

arcs[i][j]?=?0;

}

}

}

//?添加邊(無向圖)

public?void?addEdge(int?i,?int?j)

{

//?邊的頭尾不能為同一節(jié)點(diǎn)

if(i?==?j)

return;

arcs[i?-?1][j?-?1]?=?1;

arcs[j?-?1][i?-?1]?=?1;

}

//?設(shè)置節(jié)點(diǎn)集

public?void?setVertices(char[]?vertices)

{

this.vertices?=?vertices;

}

//?設(shè)置節(jié)點(diǎn)訪問標(biāo)記

public?void?setVisited(boolean[]?visited)

{

this.visited?=?visited;

}

//?打印遍歷節(jié)點(diǎn)

public?void?visit(int?i)

{

System.out.print(vertices[i]?+?"?");

}

//?從第i個(gè)節(jié)點(diǎn)開始深度優(yōu)先遍歷

private?void?traverse(int?i)

{

//?標(biāo)記第i個(gè)節(jié)點(diǎn)已遍歷

visited[i]?=?true;

//?打印當(dāng)前遍歷的節(jié)點(diǎn)

visit(i);

//?遍歷鄰接矩陣中第i個(gè)節(jié)點(diǎn)的直接聯(lián)通關(guān)系

for(int?j?=?0;?j??vexnum;?j++)

{

//?目標(biāo)節(jié)點(diǎn)與當(dāng)前節(jié)點(diǎn)直接聯(lián)通,并且該節(jié)點(diǎn)還沒有被訪問,遞歸

if(arcs[i][j]?==?1??visited[j]?==?false)

{

traverse(j);

}

}

}

//?圖的深度優(yōu)先遍歷(遞歸)

public?void?DFSTraverse(int?start)

{

//?初始化節(jié)點(diǎn)遍歷標(biāo)記

for(int?i?=?0;?i??vexnum;?i++)

{

visited[i]?=?false;

}

//?從沒有被遍歷的節(jié)點(diǎn)開始深度遍歷

for(int?i?=?start?-?1;?i??vexnum;?i++)

{

if(visited[i]?==?false)

{

//?若是連通圖,只會(huì)執(zhí)行一次

traverse(i);

}

}

}

//?圖的深度優(yōu)先遍歷(非遞歸)

public?void?DFSTraverse2(int?start)

{

//?初始化節(jié)點(diǎn)遍歷標(biāo)記

for(int?i?=?0;?i??vexnum;?i++)

{

visited[i]?=?false;

}

StackInteger?s?=?new?StackInteger();

for(int?i?=?start?-?1;?i??vexnum;?i++)

{

if(!visited[i])

{

//?連通子圖起始節(jié)點(diǎn)

s.add(i);

do

{

//?出棧

int?curr?=?s.pop();

//?如果該節(jié)點(diǎn)還沒有被遍歷,則遍歷該節(jié)點(diǎn)并將子節(jié)點(diǎn)入棧

if(visited[curr]?==?false)

{

//?遍歷并打印

visit(curr);

visited[curr]?=?true;

//?沒遍歷的子節(jié)點(diǎn)入棧

for(int?j?=?vexnum?-?1;?j?=?0;?j--)

{

if(arcs[curr][j]?==?1??visited[j]?==?false)

{

s.add(j);

}

}

}

}?while(!s.isEmpty());

}

}

}

public?static?void?main(String[]?args)

{

Scanner?sc?=?new?Scanner(System.in);

int?N,?M,?S;

while(true)

{

System.out.println("輸入N?M?S,分別表示圖G的結(jié)點(diǎn)數(shù),邊數(shù),搜索的起點(diǎn):");

String?line?=?sc.nextLine();

if(!line.matches("^\\s*([1-9]\\d?|100)(\\s+([1-9]\\d?|100)){2}\\s*$"))

{

System.out.print("輸入錯(cuò)誤,");

continue;

}

String[]?arr?=?line.trim().split("\\s+");

N?=?Integer.parseInt(arr[0]);

M?=?Integer.parseInt(arr[1]);

S?=?Integer.parseInt(arr[2]);

break;

}

DFS?g?=?new?DFS(N);

char[]?vertices?=?new?char[N];

for(int?i?=?0;?i??N;?i++)

{

vertices[i]?=?(i?+?1?+?"").charAt(0);

}

g.setVertices(vertices);

for(int?m?=?0;?m??M;?m++)

{

System.out.println("輸入圖G的第"?+?(m?+?1)?+?"條邊,格式為“i?j”,其中i,j為結(jié)點(diǎn)編號(hào)(范圍是1~N)");

String?line?=?sc.nextLine();

if(!line.matches("^\\s*([1-9]\\d?|100)\\s+([1-9]\\d?|100)\\s*$"))

{

System.out.print("輸入錯(cuò)誤,");

m--;

continue;

}

String[]?arr?=?line.trim().split("\\s+");

int?i?=?Integer.parseInt(arr[0]);

int?j?=?Integer.parseInt(arr[1]);

g.addEdge(i,?j);

}

sc.close();

System.out.print("深度優(yōu)先遍歷(遞歸):");

g.DFSTraverse(S);

System.out.println();

System.out.print("深度優(yōu)先遍歷(非遞歸):");

g.DFSTraverse2(S);

}

}

java 深度優(yōu)先搜索(回溯法)求集合的冪集

import java.util.ArrayList;

import java.util.List;

public class BackTrack {

public static void main(String[] args) {

//初始化一個(gè)集合,放在list里面

ListString list=new ArrayListString();

list.add("1");

list.add("2");

list.add("3");

list.add("f");

ListString li=new ArrayListString();

PowerSet(0,list,li);

}

//回溯法求冪集

public static void PowerSet(int i,ListString list,ListString li){

if(ilist.size()-1){System.out.println(li);}

else{

li.add(list.get(i));//左加

PowerSet(i+1,list,li); //遞歸方法

li.remove(list.get(i)); //右去

PowerSet(i+1, list, li);

}

}

}

注:該方法采用中序遍歷二叉樹(實(shí)際這棵樹是不存在的)。對(duì)于第一個(gè)元素,左節(jié)點(diǎn)加進(jìn)去,右節(jié)點(diǎn)去掉。對(duì)于第i一個(gè)節(jié)點(diǎn),左加,右去。直到i大于元素的總個(gè)數(shù)。

輸出結(jié)果:

[1, 2, 3, 4]

[1, 2, 3]

[1, 2, 4]

[1, 2]

[1, 3, 4]

[1, 3]

[1, 4]

[1]

[2, 3, 4]

[2, 3]

[2, 4]

[2]

[3, 4]

[3]

[4]

[]

用java編寫 深度優(yōu)先法 尋路時(shí) 怎么實(shí)現(xiàn)八個(gè)方向的路徑選擇

//循環(huán)遍歷八個(gè)方向:

for(int dx = -1; dx = 1; dx++) {

for(int dy = -1; dy = 1; dy++) {

//向x方向移動(dòng)dx,向y方向移動(dòng)dy

int nx = x+dx, ny = y + dy;

if()//這里是你要查找的滿足條件的元素

}

}

java如何實(shí)現(xiàn) 深度優(yōu)先 廣度優(yōu)先

下面是我修改了滴源碼,是基于一張簡(jiǎn)單的地圖,在地圖上搜索目的節(jié)點(diǎn),依次用深度優(yōu)先、廣度優(yōu)先、Dijkstra算法實(shí)現(xiàn)。

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[][]// 地圖數(shù)組

{

{ 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 } };


網(wǎng)站題目:深度優(yōu)先java代碼 深度優(yōu)先使用什么數(shù)據(jù)結(jié)構(gòu)
文章源于:http://weahome.cn/article/dddeico.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部