成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

java的迷宮問(wèn)題代碼,java的迷宮問(wèn)題代碼是多少

JAVA迷宮問(wèn)題,怎么輸出所走路徑的坐標(biāo)

在Way函數(shù)的if(Maza[Loci][Locj]==0) 語(yǔ)句里面Maza[Loci][Locj]=2;前面加一句

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到婺源網(wǎng)站設(shè)計(jì)與婺源網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、網(wǎng)頁(yè)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋婺源地區(qū)。

System.out.println("The Maza route is ("+Loci+","+Locj+")");就打印出程序所走路徑的坐標(biāo)了.

求走迷宮問(wèn)題的算法,要求用Java寫(xiě)的?

public class Maze { private int[][] maze = null;

private int[] xx = { 1, 0, -1, 0 };

private int[] yy = { 0, 1, 0, -1 };

private Queue queue = null; public Maze(int[][] maze) {

this.maze = maze;

queue = new Queue(maze.length * maze.length);

} public void go() {

Point outPt = new Point(maze.length - 1, maze[0].length - 1);

Point curPt = new Point(0, 0);

Node curNode = new Node(curPt, null);

maze[curPt.x][curPt.y] = 2;

queue.entryQ(curNode); while (!queue.isEmpty()) {

curNode = queue.outQ();

for (int i = 0; i xx.length; ++i) {

Point nextPt = new Point();

nextPt.x = (curNode.point).x + xx[i];

nextPt.y = (curNode.point).y + yy[i];

if (check(nextPt)) {

Node nextNode = new Node(nextPt, curNode);

queue.entryQ(nextNode);

maze[nextPt.x][nextPt.y] = 2;

if (nextPt.equals(outPt)) {

java.util.StackNode stack = new java.util.StackNode();

stack.push(nextNode);

while ((curNode = nextNode.previous) != null) {

nextNode = curNode;

stack.push(curNode);

}

System.out.println("A Path is:");

while (!stack.isEmpty()) {

curNode = stack.pop();

System.out.println(curNode.point);

}

return;

}

}

}

}

System.out.println("Non solution!");

} private boolean check(Point p) {

if (p.x 0 || p.x = maze.length || p.y 0 || p.y = maze[0].length) {

return false;

}

if (maze[p.x][p.y] != 0) {

return false;

}

return true;

} public static void main(String[] args) {

int[][] maze = {

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

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

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

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

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

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

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

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

};

new Maze(maze).go();

} private class Queue { Node[] array = null;

int size = 0;

int len = 0;

int head = 0;

int tail = 0; public Queue(int n) {

array = new Node[n + 1];

size = n + 1;

} public boolean entryQ(Node node) {

if (isFull()) {

return false;

}

tail = (tail + 1) % size;

array[tail] = node;

len++;

return true;

} public Node outQ() {

if (isEmpty()) {

return null;

}

head = (head + 1) % size;

len--;

return array[head];

} public boolean isEmpty() {

return (len == 0 || head == tail) ? true : false;

} public boolean isFull() {

return ((tail + 1) % size == head) ? true : false;

}

} private class Node { Point point = null;

Node previous = null; public Node() {

this(null,null);

} public Node(Point point, Node node) {

this.point = point;

this.previous = node;

}

} private class Point { int x = 0;

int y = 0; public Point() {

this(0, 0);

} public Point(int x, int y) {

this.x = x;

this.y = y;

} public boolean equals(Point p) {

return (x == p.x) (y == p.y);

} @Override

public String toString() {

return "(" + x + "," + y + ")";

}

}

}

請(qǐng)幫忙用數(shù)據(jù)結(jié)構(gòu)(java版)的知識(shí)解決這道迷宮問(wèn)題的程序代碼。

我這是用c寫(xiě)的。你可以看看,希望能幫助到你。

#include"stdlib.h"

#include"stdio.h"

#define N 50

#define M 50

int X;

int maze[N+2][M+2];

struct point{

int row,col,predecessor;

}queue[512];

int head=0,tail=0;

void shoudong_maze(int m,int n){

int i,j;

printf("\n\n");

printf("請(qǐng)按行輸入迷宮,0表示通路,1表示障礙:\n\n");

for(i=0;im;i++)

for(j=0;jn;j++)

scanf("%d",maze[i][j]);

}

void zidong_maze(int m,int n){

int i,j;

printf("\n迷宮生成中……\n\n");

system("pause");

for(i=0;im;i++)

for(j=0;jn;j++)

maze[i][j]=rand()%2;

//由于rand()產(chǎn)生的隨機(jī)數(shù)是從0到RAND_MAX

//RAND_MAX是定義在stdlib.h中的,其值至少為32767)

//要產(chǎn)生從X到Y(jié)的數(shù),只需要這樣寫(xiě):k=rand()%(Y-X+1)+X;

}

void print_maze(int m,int n){

int i,j;

printf("\n迷宮生成結(jié)果如下:\n\n");

printf("迷宮入口\n");

printf("↓");

for(i=0;im;i++)

{printf("\n");

for(j=0;jn;j++)

{if(maze[i][j]==0) printf("□");

if(maze[i][j]==1) printf("■");}

}

printf("→迷宮出口\n");

}

void result_maze(int m,int n)

{ int i,j;

printf("迷宮通路(用☆表示)如下所示:\n\t");

for(i=0;im;i++)

{ printf("\n");

for(j=0;jn;j++)

{if(maze[i][j]==0||maze[i][j]==2) printf("□");

if(maze[i][j]==1) printf("■");

if(maze[i][j]==3) printf("☆");

}

}

}

void enqueue(struct point p)

{ queue[tail]=p;

tail++;

}

struct point dequeue()

{ head++;

return queue[head-1];

}

int is_empty()

{ return head==tail;

}

void visit(int row,int col,int maze[52][52])

{ struct point visit_point={row,col,head-1};

maze[row][col]=2;

enqueue(visit_point);

}

int mgpath(int maze[52][52],int m,int n)

{ X=1;

struct point p={0,0,-1};

if(maze[p.row][p.col]==1)

{ printf("\n===============================================\n");

printf("此迷宮無(wú)解\n\n");X=0;return 0;}

maze[p.row][p.col]=2;

enqueue(p);

while(!is_empty())

{p=dequeue();

if((p.row==m-1)(p.col==n-1)) break;

if((p.col+1n)(maze[p.row][p.col+1]==0)) visit(p.row,p.col+1,maze);

if((p.row+1m)(maze[p.row+1][p.col]==0)) visit(p.row+1,p.col,maze);

if((p.col-1=0)(maze[p.row][p.col-1]==0)) visit(p.row,p.col-1,maze);

if((p.row-1=0)(maze[p.row-1][p.col]==0)) visit(p.row-1,p.col,maze);

}

if(p.row==m-1p.col==n-1)

{printf("\n==================================================================\n");

printf("迷宮路徑為:\n");

printf("(%d,%d)\n",p.row,p.col);

maze[p.row][p.col]=3;

while(p.predecessor!=-1)

{p=queue[p.predecessor];

printf("(%d,%d)\n",p.row,p.col);

maze[p.row][p.col]=3;

}

}

else {printf("\n=============================================================\n");

printf("此迷宮無(wú)解!\n\n");X=0;}

return 0;

}

int main()

{int i,m,n,cycle=0;

while(cycle!=(-1))

{

printf("********************************************************************************\n");

printf(" ☆歡迎進(jìn)入迷宮求解系統(tǒng)☆\n");

printf(" 設(shè)計(jì)者:尹旭 林靜波(信息2班)\n");

printf("********************************************************************************\n");

printf(" 手動(dòng)生成迷宮 請(qǐng)按:1\n");

printf(" 自動(dòng)生成迷宮 請(qǐng)按:2\n");

printf(" 退出 請(qǐng)按:3\n\n");

printf("********************************************************************************\n");

printf("\n");

printf("請(qǐng)選擇你的操作:\n");

scanf("%d",i);

switch(i)

{case 1:printf("\n請(qǐng)輸入行數(shù):");

scanf("%d",m);

printf("\n");

printf("請(qǐng)輸入列數(shù):");

scanf("%d",n);

while((m=0||m50)||(n=0||n50))

{ printf("\n抱歉,你輸入的行列數(shù)超出預(yù)設(shè)范圍(0-50,0-50),請(qǐng)重新輸入:\n\n");

printf("請(qǐng)輸入行數(shù):");

scanf("%d",m);

printf("\n");

printf("請(qǐng)輸入列數(shù):");

scanf("%d",n);

}

shoudong_maze(m,n);

print_maze(m,n);

mgpath(maze,m,n);

if(X!=0)

result_maze(m,n);

printf("\n\nPress Enter Contiue!\n");

getchar();

while(getchar()!='\n');

break;

case 2:printf("\n請(qǐng)輸入行數(shù):");

scanf("%d",m);

printf("\n");

printf("請(qǐng)輸入列數(shù):");

scanf("%d",n);

while((m=0||m50)||(n=0||n50))

{printf("\n抱歉,你輸入的行列數(shù)超出預(yù)設(shè)范圍(0-50,0-50),請(qǐng)重新輸入:\n\n");

printf("請(qǐng)輸入行數(shù):");

scanf("%d",m);

printf("\n");

printf("請(qǐng)輸入列數(shù):");

scanf("%d",n);

}

zidong_maze(m,n);

print_maze(m,n);

mgpath(maze,m,n);

if(X!=0)

result_maze(m,n);

printf("\n\nPress Enter Contiue!\n");getchar();while(getchar()!='\n');break;

case 3:cycle=(-1);

break;

default:printf("\n");

printf("你的輸入有誤!\n");

printf("\nPress Enter Contiue!\n");

getchar();

while(getchar()!='\n');break;

}

}

}

本文名稱:java的迷宮問(wèn)題代碼,java的迷宮問(wèn)題代碼是多少
URL網(wǎng)址:http://jinyejixie.com/article40/hsoheo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、網(wǎng)站設(shè)計(jì)、關(guān)鍵詞優(yōu)化靜態(tài)網(wǎng)站、企業(yè)建站外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
高邮市| 杂多县| 张家界市| 年辖:市辖区| 垫江县| 平乡县| 沧州市| 湟中县| 竹山县| 芮城县| 马关县| 江陵县| 乐东| 蓬安县| 沅江市| 呼图壁县| 文山县| 宝应县| 平南县| 观塘区| 沈阳市| 高台县| 根河市| 兰溪市| 平潭县| 怀化市| 曲靖市| 剑川县| 遂溪县| 新津县| 清流县| 延吉市| 武强县| 香河县| 和政县| 佛山市| 岳阳县| 巴林左旗| 马鞍山市| 东兴市| 垣曲县|