1樓:匿名使用者
1.回溯演算法
7. 迷宮問題
給一個20×20的迷宮、起點座標和終點座標,問從起點是否能到達終點。
輸入資料:』.』表示空格;』x』表示牆。
程式如下:
#include
#include
void search(int,int);
int canplace(int,int);
void readdata(); //讀入資料
void printresult(); //列印結果
int a[20][20]; //a陣列存放迷宮
int s,t;
int main()
void search(int row, int col)
void printresult()
}void readdata()
}int canplace(int row, int col)
2.搜尋演算法
如下圖12×12方格圖,找出一條自入口(2,9)到出口(11,8)的最短路徑。
抱歉,圖案貼上不上
本題給出完整的程式和一組測試資料。狀態:老鼠所在的行、列。程式如下:
#include
void readdata(); //讀入資料
void init(); //初始化
int search(); //廣搜,並在每一個可到達的每一個空格出填上最小步數
int emptyopen(); //判棧是否為空:空:1;非空:0。
int takeoutofopen(); //從棧中取出一個元素,並把該元素從棧中刪除
int canmoveto(int,int,int*,int*,int); //判能否移動到該方向,並帶回座標(r,c)
int isaim(int row, int col); //判斷該點是否是目標
int used(int,int); //判斷該點是否已經走過
void addtoopen(int,int); //把該點加入到open表
int a[12][12]; //a存放迷宮,0表示空格,-2表示牆。
//廣搜時,未找到目標以前到達的空格,填上到達該點的最小步數
int n; //n為迷宮邊長,注:若大於12,必須修改一些引數,如a的大小
int open[20],head,tail,openlen=20; //open表
int s,t; //起點和終點
int main()
int search()}}
}}int emptyopen()
int takeoutofopen()
u=open[head++];
head=head%openlen;
return(u);
}int canmoveto(int row, int col, int *p, int *q, int direction)
*p=r;
*q=c;
if(r<0||r>=n||c<0||c>=n) //如果越界返回0
return(0);
if(a[r][c]==0) //如果是空格返回1
return(1);
return(0); //其餘情況返回0
}int isaim(int row, int col)
int used(int row, int col)
void addtoopen(int row, int col)
void readdata()
}void init()
測試資料如下:
12 10 7 1 8
************
x......x.***
x.x.xx.....x
x.x.xx.***.x
x.x.....x..x
x.*********x
x...x.x....x
x.***...***x
x.....x....x
***.***x.x.x
******x..***
************
關於C 迷宮問題,尋找一條通路穿越迷宮(找到一條即可)。要求寫出遞迴程式來穿越迷宮
夢幻 題目有問題 如何指定迷宮的起點和終點。我這裡假設迷宮某個邊界位置是起點,x,y 是否是終點要用gotgoal x,y 函式判斷。核心函式 void dfs char m,int height,int width,int x,int y,int now dir 這裡m是一個一維陣列,表示迷宮。格...
C語言問題,C語言問題C語言問題
選a首先,空格也是一種字元,b d選項分別把空格賦給了c1,c1 其次,c選項不完整,排除 不僅a這樣,10a20b也是可以的。 聽不清啊 答案a 10a 20b cr 是正確的。因為scanf d c 時,會忽略數字前面的空格,遇到非數字字元就會結束讀取 非數字字元會留待下一次讀取,即被後面的 c...
C語言問題,C語言報錯的問題?
一季忘川 printstar 返回值為void a是int變數,不能這樣賦值 這樣就好了 void printstar main 給你個呼叫函式賦值的例子int add int a,int b int main 若影蝸牛 printstar 函式,返回值為void,不能賦值給int型的a 在prin...