11 6號,完畢迷宮問題

2021-10-10 07:33:34 字數 3113 閱讀 4829

實驗2

迷宮問題

**限制太大,需要完善

/**關於路徑長度,需要在結構體記錄

那就這樣,兩個節點如果能走通

那就記錄對應陣列為正值

就是dir中包方向

對應陣列的值為正就給予通過

正值大小表示路徑

一旦棧中路徑確定

距離可以從陣列中得到

*/#include

#include

#define ok 1

#define error 0

#define size 25

//#define selemtype int

#define stack_init_size 100

//初始分配空間

#define stackincrement 10

//分配增量

int map[size]

[size]

;int dir[size]

;typedef

struct

selemtype;

typedef

struct

sqstack;

/*構造空棧*/

intinitstack

(sqstack * sptr)

;/*銷毀棧*/

intdestorystack

(sqstack * sptr)

;/*把棧置空*/

intclearstack

(sqstack * sptr)

;/*判空*/

intstackempty

(sqstack s)

;/*返回棧頂元素*/

intgettop

(sqstack s,selemtype * e)

;/*入棧*/

intpush

(sqstack * sptr,selemtype e)

;/*出棧*/

intpop

(sqstack * sptr,selemtype * e)

;/*將檔案讀取出來,並且傳遞歸主函式*/

/*讀取檔案,返回矩陣規模*/

intmapsize()

;/*給矩陣賦值*/

intassignmatrix

(int size)

;/*根據矩陣規模確定方向定義:dir[i]代表向i結點前進*/

void

definedirection

(int size)

;/*判斷從結點i,沿方向dir前進是否可行*/

intmove

(int i,

int dir,

int size)

;/*計算方案路徑長度*/

intmazelength

(sqstack * sptr)

;/*尋找迷宮出口*/

intmaze

(int start,

int end,

int size)

;int

main()

int start,end;

scanf

("%d%d"

,&start,

&end)

;maze

(start,end,size)

;for

(int i =

1;i < size;i++

)return0;

}/*讀取檔案,返回矩陣規模*/

intmapsize()

else

fclose

(fp)

;//關閉檔案

return size+1;

}}/*給矩陣賦值*/

intassignmatrix

(int size)

else}}

fclose

(fp);}

return ok;

}/*根據矩陣規模確定方向定義:dir[i]代表向i結點前進*/

void

definedirection

(int size)

/*判斷從結點i,沿方向dir前進是否可行*/

intmove

(int i,

int dir,

int size)

else

else}}

/*計算方案路徑長度*/

intmazelength

(sqstack * sptr)

return sum_length;

}/*尋找迷宮出口*/

intmaze

(int start,

int end,

int size)

}else

}/*如果有下一節點,此時就應該dir正確,否則,需要退棧*/if(

move

(e.location,e.dir,size)

)//還有救

else}}

printf

("###########################################\n\n");

}printf

("臣妾盡力了,迷宮無出口\n");

return error;

}/*構造空棧*/

intinitstack

(sqstack * sptr)

/*銷毀棧*/

intdestorystack

(sqstack * sptr)

/*把棧置空*/

intclearstack

(sqstack * sptr)

/*判空*/

intstackempty

(sqstack s)

/*返回棧頂元素*/

intgettop

(sqstack s,selemtype * e)

/*入棧*/

intpush

(sqstack * sptr,selemtype e)

*(sptr->top++

)= e;

return ok;

}/*出棧*/

intpop

(sqstack * sptr,selemtype * e)

11 6 測試 約瑟夫問題

yjc 很喜歡玩遊戲,今天他決定和朋友們玩約瑟夫遊戲。約瑟夫遊戲的規則是這樣的 n個人圍成一圈,從1 號開始依次報數,當報到m 時,報1 2 m 1 的人出局,下乙個人接著從1 開始報,保證 n 1 是 m 1 的倍數。最後剩的乙個人獲勝。yjc 很想贏得遊戲,但他太笨了,他想讓你幫他算出自己應該站...

問題 A 迷宮求解問題

時間限制 10 sec 記憶體限制 2048 mb 提交 574 解決 306 提交 狀態 討論版 用乙個m n的矩陣表示迷宮,0和1分別表示迷宮中的通路和障礙。設計乙個程式,對給定的迷宮,求出找到的第一條從入口到出口的通路,或得到沒有通路的結論。我們指定 1 迷宮的入口為矩陣的左上角 1,1 迷宮...

迷宮問題求解(1) 簡單迷宮

標頭檔案 include include include include include maze.h define max 100 typedef struct position datatype typedef struct stack stack void stackinit stack s ...