1樓:
#include
#include
#define m 15
#define n 15
struct mark //定義迷宮內點的座標型別
;struct element
;typedef struct lstack //鏈棧
*plstack;
構造空棧
int stackempty(plstack s) //判斷棧是否為空
壓入新資料元素
棧頂元素出棧
else
return 0;
}void mazepath(struct mark start,struct mark end,int maze[m][n],int diradd[4][2])
while(s2)
return; //跳出兩層迴圈
}if(maze[a][b]==0) //找到可以前進的非出口的點
d++;}}
printf("沒有找到可以走出此迷宮的路徑\n");
}void initmaze(int maze[m][n])
for(j=0;j<=n+1;j++)
for(i=0;i<=m+1;i++) //輸出迷宮
}void main()
,,}; //行增量和列增量 方向依次為東西南北 [/m]
initmaze(sto); //建立迷宮
printf("輸入入口的橫座標,縱座標[逗號隔開]\n");
printf("輸入出口的橫座標,縱座標[逗號隔開]\n");
scanf("%d,%d",&end.x,&end.y);
mazepath(start,end,sto,add); //find path
system("pause");}
2樓:笨鳥愛糖果
#include
#include
#include
//typedef char element;
typedef struct
element;
typedef struct
sqstack;
*s.top=e;
s.top++;
return 1;
}int pass(int maze[5],element curpos)//二維陣列的傳遞
else
return 0;
else
if(e.di<4)}}
}while(!sqstack_empyt(s));
return 0;
}void main(),,
,,}; printf("路徑為\n");
a=findmaze(maze,start, end);
printf("->->->%d",a);
}這是以前寫的一個,沒仔細檢查了,樓主可以參考一下
資料結構 迷宮問題
3樓:匿名使用者
#include
#include
#include
typedef struct pos /*描述迷宮當前位置和方向*/
p;typedef struct linknode /*連結串列結構,用於棧的元素型別*/
linknode;
typedef struct stack /*鏈式棧,用於儲存迷宮路徑資訊*/
stack;
int row=0; /*迷宮的行數*/
int line=0; /*迷宮的列數*/
void initstack(stack *s) /*棧置空*/
void push(stack *s,p p) /*資料入棧*/
p pop(stack *s) /*棧頂元素出棧*/
p getpop(stack s) /*讀取棧頂元素*/
int empty(stack s) /*判空*/
int **initmaze() /*返回迷宮的二維指標*/
printf("迷宮的路徑為:\n");
printf("前兩個數字表示位置,最後一個數字表示方向\n");
printf("1表示向左,2表示向下,3表示向右,4表示向上,0表示無方向\n");
while(!empty(t)) /*輸出路徑*/
}int findmaze(int **maze,int r,int l) /*尋找路徑,找到返回1,沒找到返回0*/
if(a==r&&b==l) /*到達出口*/
a=temp2.x+1;
b=temp2.y; /*當前位置下方向相鄰的方塊*/
if(maze[a][b]==0)
if(a==r&&b==l) /*到達出口*/
a=temp2.x;
b=temp2.y-1; /*當前位置右方向相鄰的方塊*/
if(maze[a][b]==0)
if(a==r&&b==l) /*到達出口*/
a=temp2.x-1;
b=temp2.y; /*當前位置上方向相鄰的方塊*/
if(maze[a][b]==0)
if(a==r&&b==l) /*到達出口*/
if(getpop(p).x==getpop(q).x
若四個方向都走不通,則資料出棧,退回一格*/
}return 0; /*探索迷宮失敗*/
}void main()
4樓:武將裡頭我最大
計算機問題啊。。。。真的不懂。。。。懂這些的都是人才
5樓:
兄弟,我的給你,回溯法
#include
const int n=8;
int map[n][n];
int fp[n][n];
int dx[4]=;
int dy[4]=;
bool ok(int i ,int j)void dfs(int x,int y)printf("\n");
}else
fp[x][y]=0;}}
}int main(void)
printf("******************************\n");
dfs(0,0);
return 0;}
6樓:
一樓的哥們回答的不錯。我看行。
用遞迴求解迷宮問題
7樓:匿名使用者
b[9][9] = ;
a[81][81] = {};
f(i=1,j=1,k=0)
if(i == 8 && j==8)
if(b[i][j] == 0)
a[k][0]=i;
a[k][1]=j;
f(i+1,j,k+1);//往右的結果
a[k][0]=i;
a[k][1]=j;
f(i,j+1,k+1);//往下的結果
a[k][0]=i;
a[k][1]=j;
f(i-1,j,k+1);//往上的結果
a[k][0]=i;
a[k][1]=j;
f(i,j-1,k+1);//往左的結果
}如果你思路不明白可以再問,哈
資料結構迷宮問題求解。
8樓:
思路是連結串列儲存已走過的路徑(二級連結串列、struct、string等),儲存3個值表示除上一位置之外的三個方向是否測試過,指標a指向連結串列上當前位置,然後測試除上一位置之外的三個方向,並記錄。用do loop依次判斷,如果三個方向都不通 就將a退後一格然後讀取已檢索位置,並測試第一個未檢索位置。迴圈至終點或a退回起點並且沒有未檢索位置
資料結構中,求解迷宮問題的程式演算法,,, 30
9樓:
// test_03.cpp : 定義控制檯應用程式的入口點。
//#include "stdafx.h"
#include
using namespace std;
struct postype /* 迷宮座標位置型別 */;int maze[5][5] = ,,
,,};#define maxlength 5int curstep=1;
int a[maxlength];
int b[maxlength];
struct selemtype/* 棧的元素型別 */;#define stack_init_size 10 /* 儲存空間初始分配量 */
#define stackincrement 2 /* 儲存空間分配增量 */
struct sqstack //sqstack; /* 順序棧 */
bool initstack(sqstack *s)(*s).top=(*s).base;
(*s).stacksize=stack_init_size;
return true;
}bool push(sqstack *s,selemtype e)(*s).top=(*s).base+(*s).stacksize;
(*s).stacksize+=stackincrement;
}*((*s).top)++=e;
return true;
}bool stackempty(sqstack s)bool pop(sqstack *s,selemtype *e)bool pass(postype b)
void footprint(postype a)postype nextpos(postype c,int di),,,};
/* 移動方向,依次為東南西北 */
c.x+=direc[di].x;
c.y+=direc[di].y;
return c;
}void markprint(postype b)void print(int x,int y)cout<<"("<
}else system("pause"); return 0;} 結構,顧名思義,是由兩個以上的東西組織在一起時,才涉及到組織 結構 這種概念.比如自然界中,就目前的理論,物質是無限可分的,所以世間萬物都有各自的 結構 計算機理論中的話,資料的最小單元是位,所以,從廣義上說,整型,浮點型都有自己的結構,即各個位是按什麼原則組織在一起,可以稱為整型或浮點型.但一般我... include using namespace std class t 定義描述迷宮中當前位置的結構型別 class linknode 連結串列結點 class stack stack stack 建構函式,置空棧 stack stack 解構函式 void stack push t e 把元素x壓... 你的while迴圈寫錯了,你想借助s遍歷,但是迴圈條件用的還是top,而top在迴圈內部沒有修改,所以專就進入死循屬環了,應該這麼改 while s null 用s 還有,print函式應該是不想修改鏈棧的吧,只是讀取。所以引數就不要用a的地址了,直接用a傳遞就行了,保證函式體內不會意外修改a。函式...關於資料結構的定義有問題
尋求計算機專業程式設計 1迷宮問題的求解,要求生成迷宮矩陣,求出
關於資料結構c語言鏈棧的問題