java队列迷宫代码 队列迷宫最短路径

java写一个简单队列,有进队和出队操作,帮我检查一下程序数据的情况:
[0] [1] [2] [3] [4]
加入一个:
[0] [1] [2] [3] [4] [5]
取出一个后
[0] [1] [2] [3] [4] [5]
可以看出来,每次取出第一个,第一个元素还是没变,一直是0
要让其数据变成 [1] [2] [3] [4] [5]那么就要自己手动变动数据(就是手动往前移动)
你好 请问你能帮我做个走迷宫的java版数据结构代码吗?用栈和队列制作 谢谢,到时候一定加分给你的2011年4月12日在人民大会堂河南厅颁发的“卫浴十大品牌”排行榜分别是:
申鹭达卫浴、
科勒卫浴
TOTO
箭牌卫浴、
和成卫浴、
美标卫浴
四维卫浴、
东鹏卫浴、
科勒卫浴、
全友卫浴 。
数据结构怎么用队列解决迷宫问题 , 说思想不要写一堆算法 谢谢大神了1. 首先将迷宫分成若干个正方形的单元格,并随机选中一个作为起始点(start) 。2. 将正被访问的单元格标记为已访问,得到它所有相邻单元格 。在这些相邻的单元格中随机选择一个:- 如果这个被选中的单元格没有被访问过,那么移掉正被访问单元格和被选中单元格之间的墙体,并将这个被选中单元格作为正被访问单元格 。- 如果正被访问单元格的所有相邻单元格都被访问过,那么在所有被访问过的单元格(这里指迷宫中所有已被访问过的单元格)中随机选中一个作为正被访问单元格,如此循环下去,直到迷宫中所有的单元格都被访问过为止 。
急求大佬帮忙写一下java程序递归的话就是深度优先搜索(可以理解成不撞南墙不回头,撞了墙就原路返回)可以加上剪枝(就是做标记 , 如果之前某一次走过但不通的路下次再走到就不用走了)
用栈的话应该是广度优先搜索(大概就是分裂无数个你,每次向所有方向走一步) , 不过广搜要用队列实现 , 用栈本质还是深搜了
具体算法可以搜百度
帮忙给个迷宫问题的JAVA程序 , 最好是用VC..粘的也好 , 只要可以运行就好..importjava.io.*;
import java.util.Stack;
classMazeCell{
intx,y;
MazeCell(){
}
MazeCell(inti,intj){
x=i;y=j;
}
booleanequals(MazeCellcell){
returnx==cell.xy==cell.y;
}
}
classMaze{
introws=0,cols=0;
char[][]store;
MazeCellcurrentCell,exitCell=newMazeCell(),entryCell=newMazeCell();
finalcharexitMarker='e',entryMarker='m',visited='.';
finalcharpassage='0',wall='1';
StackmazeStack=newStack();
Maze(){
introw=0,col=0;
StackmazeRows=newStack();
InputStreamReaderisr=newInputStreamReader(System.in);
BufferedReaderbuffer=newBufferedReader(isr);
Stringstr;
System.out.println("Enterarectangularmazeusingthefollowing"
"characters:\nm-entry\ne-exit\n1-wall\n0-passage\n"
"Enteronelineatattime;endwithCtrl-z(PC)orCtrl-D(Unix):");
try{
str=buffer.readLine();
while(str!=null){
row;
cols=str.length();
str="1"str"1";//put1sintheborderlinecells;
mazeRows.push(str);
if(str.indexOf(exitMarker)!=-1){
exitCell.x=row;
exitCell.y=str.indexOf(exitMarker);
}
if(str.indexOf(entryMarker)!=-1){
entryCell.x=row;
entryCell.y=str.indexOf(entryMarker);
}
str=buffer.readLine();
}
}catch(IOExceptioneof){
}
rows=row;
store=newchar[rows 2][];//createa1Darrayofchararrays;
store[0]=newchar[cols 2];//aborderlinerow;
for(;!mazeRows.isEmpty();row--)
store[row]=((String)mazeRows.pop()).toCharArray();
store[rows 1]=newchar[cols 2];//anotherborderlinerow;
for(col=0;col=cols 1;col){
store[0][col]=wall;//filltheborderlinerowswith1s;
store[rows 1][col]=wall;
}
}
voiddisplay(PrintStreamout){
for(introw=0;row=rows 1;row)
out.println(store[row]);
out.println();
}
voidpushUnvisited(introw,intcol){
if(store[row][col]==passage||store[row][col]==exitMarker)
mazeStack.push(newMazeCell(row,col));
}
voidexitMaze(PrintStreamout){
introw=0,col=0;
currentCell=entryCell;
out.println();
while(!currentCell.equals(exitCell)){
row=currentCell.x;
col=currentCell.y;
display(System.out);//printasnapshot;
if(!currentCell.equals(entryCell))
store[row][col]=visited;
pushUnvisited(row-1,col);
pushUnvisited(row 1,col);
pushUnvisited(row,col-1);
pushUnvisited(row,col 1);
if(mazeStack.isEmpty()){
display(out);
out.println("Failure");
return;
}
elsecurrentCell=(MazeCell)mazeStack.pop();
}
display(out);
out.println("Success");
}
staticpublicvoidmain(Stringargs[]){
(newMaze()).exitMaze(System.out);
}
}
试一下这个,是不是你想要的……
___________________________________________________________________________________________________________________________
html代码?你是说你要做一个java applet的网页迷宫小游戏??
c编写一个迷宫游戏,求完整代码 。最好能有适当的注释 。#include stdio.h
#include iostream
#include conio.h
#include windows.h
#include time.h
using namespace std;
#define Height 25//高度java队列迷宫代码,必须为奇数
#define Width 25 //宽度 , 必须为奇数
#define Wall 1//用1表示墙
#define Road 0//用0表示路
#define Start 2
#define End 3
#define up 72
#define down 80
#define left 75
#define right 78
#define flag 5
int map[Height 2][Width 2];
int x=2,y=1; //玩家当前位置,刚开始在入口处
class Migong
{
【java队列迷宫代码 队列迷宫最短路径】public:
void gotoxy(int x,int y);//移动坐标java队列迷宫代码的函数声明
void shengcheng(int x,int y);//随机生成迷宫的函数声明
void display(int x,int y);//显示迷宫的函数声明
void chushi();//初始化迷宫的函数声明
};
class Wanjia:public Migong//玩家类由迷宫类派生来
{
public:
void gonglue(int x,int y);
void shang(int x,int y);
void xia(int x,int y);
void zuo(int x,int y);
void you(int x,int y);
void game();//游戏运行包括移动的函数声明
};
void Migong::gotoxy(int x,int y) //移动坐标这是使光标 到(x,y)这个位置的函数.调用 COORD 需要#include.
{
COORD coord;
coord.X=x;
coord.Y=y;
SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );
}
void Migong::shengcheng(int x,int y) //随机生成迷宫
{
int c[4][2]={0,1,1,0,0,-1,-1,0}; //四个方向//数组c 01向右
//10向下
//-10向上
//0 -1向左
int i,j,t;
//将方向打乱
for(i=0;i4;i)
{
j=rand()%4;//随机生成j
t=c[i][0];c[i][0]=c[j][0];c[j][0]=t;//将c[i][0]和c[j][0]交换
t=c[i][1];c[i][1]=c[j][1];c[j][1]=t;//类似上
}
map[x][y]=Road;//当前位置设为路
for(i=0;i4;i)//沿四个方向设置
if(map[x 2*c[i][0]][y 2*c[i][1]]==Wall)//沿c[i][0]、c[i][1]方向前2步如果是墙
{
map[x c[i][0]][y c[i][1]]=Road;//让该方向前一步设为路
shengcheng(x 2*c[i][0],y 2*c[i][1]);//在该方向前两步继续生成地图因为这里是递归函数,当执行到最后一点发现都不能走的时候 ,
//会返回到上一个函数 , 也就是上一个点,再次判断是否可以产生地图,知道地图上所有点被遍历完 。
}
}
void Migong::display(int x,int y) //显示迷宫
{
gotoxy(2*y-2,x-1);
switch(map[x][y])
{
case Start:
cout"入";break; //显示入口
case End:
cout"出";break; //显示出口
case Wall:
cout"■";break; //显示墙
case Road:
cout" ";break; //显示路
case up:
cout"↑";break;//在攻略中的标记 下同
case down:
cout"↓";break;
case left:
cout"←";break;
case right:
cout"→";break;
case flag:
cout" ";break;//标记 , 防止攻略遍历时候无线循环
}
}
void Migong::chushi()
{
int i,j;
srand((unsigned)time(NULL)); //初始化随机种子
for(i=0;i=Height 1;i)
for(j=0;j=Width 1;j)
if(i==0||i==Height 1||j==0||j==Width 1) //初始化迷宫默认四周是路
map[i][j]=Road;
else map[i][j]=Wall;
shengcheng(2*(rand()%(Height/2) 1),2*(rand()%(Width/2) 1)); //从随机一个点开始生成迷宫,该点行列都为偶数
for(i=0;i=Height 1;i) //边界处理把最开始默认为路的堵上,以免跑出迷宫
{
map[i][0]=Wall;
map[i][Width 1]=Wall;
}
for(j=0;j=Width 1;j) //边界处理
{
map[0][j]=Wall;
map[Height 1][j]=Wall;
}
map[2][1]=Start; //给定入口
map[Height-1][Width]=End; //给定出口
for(i=1;i=Height;i)//i初始为1,结束为height,以免画出外围
for(j=1;j=Width;j) //画出迷宫同上
display(i,j);
}
void Wanjia::game()
{
int x=2,y=1; //玩家当前位置,刚开始在入口处
int c; //用来接收按键
while(1)
{
gotoxy(2*y-2,x-1);
cout"☆"; //画出玩家当前位置
if(map[x][y]==End) //判断是否到达出口
{
gotoxy(30,24);//到达此坐标
cout"到达终点,按任意键结束";
getch();
break;
c=getch();
}
if(c!=-32)
{
c=getch();
switch(c)
{
case 72: //向上走
if(map[x-1][y]!=Wall)
{
display(x,y);
x--;
}
break;
case 80: //向下走
if(map[x 1][y]!=Wall)
{
display(x,y);
x;
}
break;
case 75: //向左走
if(map[x][y-1]!=Wall)
{
display(x,y);
y--;
}
break;
case 77: //向右走
if(map[x][y 1]!=Wall)
{
display(x,y);
y;
}
break;
case 112://按下P
gonglue(2,1);break;//如果按下P执行攻略函数
}
}
}
}
void Wanjia::shang(int x,int y)
{
if(map[x][y]==End) //判断是否到达出口
{
gotoxy(52,20);//到达此坐标
cout"到达终点,按任意键结束";
getch();
exit(0);
}
if(map[x-1][y]!=Wallmap[x-1][y]!=upmap[x-1][y]!=downmap[x-1][y]!=leftmap[x-1][y]!=rightmap[x-1][y]!=flag)
{//当移动后的下一个位置没有被走过且不是墙
map[x][y]=up;
display(x,y);
x--;
gonglue(x,y);//递归,攻略下一个点
}
}
void Wanjia::xia(int x,int y)
{
if(map[x][y]==End) //判断是否到达出口
{
gotoxy(52,20);//到达此坐标
cout"到达终点,按任意键结束";
getch();
exit(0);
}
if(map[x 1][y]!=Wallmap[x 1][y]!=upmap[x 1][y]!=downmap[x 1][y]!=leftmap[x 1][y]!=rightmap[x 1][y]!=flag) //当移动后的下一个位置没有被走过且不是墙
{
map[x][y]=down;
display(x,y);
x;
gonglue(x,y);//递归,攻略下一个点
}
}
void Wanjia::zuo(int x,int y)
{
if(map[x][y]==End) //判断是否到达出口
{
gotoxy(52,20);//到达此坐标
cout"到达终点,按任意键结束";
getch();
exit(0);
}
if(map[x][y-1]!=Wallmap[x][y-1]!=upmap[x][y-1]!=downmap[x][y-1]!=leftmap[x][y-1]!=rightmap[x][y-1]!=flag) //当移动后的下一个位置没有被走过且不是墙
{
map[x][y]=left;
display(x,y);
y--;
gonglue(x,y); //递归,攻略下一个点
}
}
void Wanjia::you(int x,int y)
{
if(map[x][y]==End) //判断是否到达出口
{
gotoxy(52,20);//到达此坐标
cout"到达终点,按任意键结束";
getch();
exit(0);
}
if(map[x][y 1]!=Wallmap[x][y 1]!=upmap[x][y 1]!=downmap[x][y 1]!=leftmap[x][y 1]!=rightmap[x][y 1]!=flag) //当移动后的下一个位置没有被走过且不是墙
{
map[x][y]=right;
display(x,y);
y;
gonglue(x,y); //递归 , 攻略下一个点
}
}
void Wanjia::gonglue (int x,int y)
{
gotoxy(2*y-2,x-1);
cout"☆"; //画出玩家当前位置
if(map[x][y]==End) //判断是否到达出口
{
gotoxy(52,20);//到达此坐标
cout"到达终点,按任意键结束";
getch();
exit(0);
}
shang(x,y);//上下左右
xia(x,y);
zuo(x,y);
you(x,y);
map[x][y]=flag;//当上下左右都无法走的时候,即为死路,因为递归函数开始向后,所以讲死路点值置为flag,变成无形之墙 。
display(x,y);
}
int main()
{
cout"移动迷宫"endl;
cout"--------------------"endl;
cout"欢迎来到移动迷宫游戏"endl;
cout"--------------------"endl;
cout"游戏说明java队列迷宫代码:给定一出口和入口"endl;
cout"玩家控制一个五角星(☆)从入口走到出口"endl;
cout"系统会记录java队列迷宫代码你所走的步数"endl;
cout"按回车进入游戏";
cout"(按下P键可以获得攻略 。)";
getch();
system("cls");//清屏函数,清除开始界面
Wanjia w1;
w1.chushi();
w1.game(); //开始游戏
//w1.gonglue(2,1);//功略显示
getch();
return 0;
}
————————————————
版权声明java队列迷宫代码:本文为CSDN博主「失落之风」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明 。
原文链接:
喜欢的源码拿走 , 把小赞赞留下
关于java队列迷宫代码和队列迷宫最短路径的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读