實驗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 ...