c#实现迷宫算法(转)
今天突然翻开了c语言数据结构,按照和课本上类似的思路,用c#重写了迷宫算法。
算法没有实现最短路径走法,如果你知道最短路径要怎么走,麻烦留言告诉我一下,谢谢!
输出结果:
算法没有实现最短路径走法,如果你知道最短路径要怎么走,麻烦留言告诉我一下,谢谢!
1
using System;
2
using System.Collections;
3
using System.ComponentModel;
4
using System.Data;
5
using System.Drawing;
6
using System.Web;
7
using System.Web.SessionState;
8
using System.Web.UI;
9
using System.Web.UI.WebControls;
10
using System.Web.UI.HtmlControls;
11![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/None.gif)
12
namespace suanfa
13
{
14
/// <summary>
15
/// WebForm1 的摘要说明。
16
/// </summary>
17
public struct StackItem
18
{
19
public int order;
20
public int dir;
21
public Pos curPos;
22
}
23
public struct Pos
24
{
25
public int x;
26
public int y;
27
}
28
public class maze : System.Web.UI.Page
29
{
30
private void Page_Load(object sender, System.EventArgs e)
31
{
32
MazeStack();
33
// 在此处放置用户代码以初始化页面
34
}
35
private void MazeStack()
36
{
37
//终点坐标
38
Pos dirPos = new Pos();
39
dirPos.x = 8;
40
dirPos.y = 8;
41
//创建栈实例
42
Stack stack = new Stack();
43
//结构体StackItem的实例为栈上的一项
44
StackItem stackItem = new StackItem();
45
//初始化起点坐标
46
stackItem.curPos = new Pos();
47
stackItem.curPos.x = 1;
48
stackItem.curPos.y = 1;
49
//序号
50
stackItem.order = 0;
51
//坐标下次移动朝向: 1.东 2.西 3.南 4.北
52
stackItem.dir = 0;
53
//初始化数组,0表示通路,1表示障碍
54
int [,] arrMaze = new int[10, 10]{
55
{1,1,1,1,1,1,1,1,1,1},
56
{1,0,0,1,0,0,0,1,0,1},
57
{1,0,0,1,0,0,0,1,0,1},
58
{1,0,0,0,0,1,1,0,0,1},
59
{1,0,1,1,1,0,0,0,0,1},
60
{1,0,0,0,1,0,0,0,0,1},
61
{1,0,1,0,0,0,1,0,0,1},
62
{1,0,1,1,1,0,1,1,0,1},
63
{1,1,0,0,0,0,0,0,0,1},
64
{1,1,1,1,1,1,1,1,1,1}
65
};
66
//输出用数组模拟的迷宫
67
for(int i=0; i<=arrMaze.GetUpperBound(0); i++)
68
{
69
for(int j=0; j<=arrMaze.GetUpperBound(1); j++)
70
{
71
Response.Write(arrMaze[i,j]);
72
}
73
Response.Write("<br>");
74
}
75
Response.Write("<hr>");
76
//主程序开始
77
do
78
{
79
switch(stackItem.dir)
80
{
81
case 1:
82
stackItem.curPos.y = stackItem.curPos.y + 1;
83
break;
84
case 2:
85
stackItem.curPos.x = stackItem.curPos.x + 1;
86
break;
87
case 3:
88
stackItem.curPos.y = stackItem.curPos.y - 1;
89
break;
90
case 4:
91
stackItem.curPos.x = stackItem.curPos.x - 1;
92
break;
93
default:
94
break;
95
}
96
if(stackItem.dir == 0)
97
{
98
stackItem.dir = 1;
99
}
100
if(arrMaze[stackItem.curPos.x,stackItem.curPos.y] == 0)
101
{
102
stackItem.order++;
103
stack.Push(stackItem);
104
//2表示已经走过
105
arrMaze[stackItem.curPos.x,stackItem.curPos.y] = 2;
106
if(stackItem.curPos.x == dirPos.x && stackItem.curPos.y == dirPos.y)
107
{
108
break;
109
}
110
stackItem.dir = 1;
111
}
112
else
113
{
114
if(stackItem.dir == 4)
115
{
116
if(stack.Count > 0)
117
{
118
stack.Pop();
119
}
120
if(stack.Count > 0)
121
{
122
StackItem stackItemTemp = (StackItem)stack.Pop();
123
stackItem.dir = stackItemTemp.dir;
124
stackItem.order = stackItemTemp.order;
125
stackItem.curPos.x = stackItemTemp.curPos.x;
126
stackItem.curPos.y = stackItemTemp.curPos.y;
127
if(stackItem.dir != 4)
128
{
129
stackItem.dir++;
130
}
131
stack.Push(stackItem);
132
}
133
}
134
else
135
{
136
if(arrMaze[stackItem.curPos.x,stackItem.curPos.y] != 0)
137
{
138
//退回前一个坐标
139
switch(stackItem.dir)
140
{
141
case 1:
142
stackItem.curPos.y = stackItem.curPos.y - 1;
143
break;
144
case 2:
145
stackItem.curPos.x = stackItem.curPos.x - 1;
146
break;
147
case 3:
148
stackItem.curPos.y = stackItem.curPos.y + 1;
149
break;
150
default:
151
break;
152
}
153
stackItem.dir++;
154
}
155
}
156
}
157
}while(stack.Count > 0);
158
//主程序结束
159
160
if(stack.Count > 0)
161
{
162
while(stack.Count > 0)
163
{
164
stackItem = (StackItem)stack.Pop();
165
Response.Write(stackItem.order + "。" + "(" + stackItem.curPos.x + "," + stackItem.curPos.y + ")<br>");
166
}
167
}
168
else
169
{
170
Response.Write("路径不通!");
171
}
172
//清空栈
173
stack.Clear();
174
}
175
Web 窗体设计器生成的代码
195
}
196
}
197![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
14
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
15
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
17
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
19
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
23
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
25
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
28
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
30
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
32
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
35
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
37
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
40
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
46
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
48
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
49
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
51
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
53
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
54
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
55
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
56
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
57
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
58
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
59
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
60
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
61
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
62
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
63
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
64
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
65
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
66
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
67
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
68
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
69
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
70
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
71
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
72
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
73
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
74
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
75
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
76
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
77
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
78
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
79
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
80
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
81
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
82
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
83
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
84
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
85
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
86
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
87
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
88
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
89
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
90
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
91
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
92
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
93
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
94
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
95
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
96
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
97
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
98
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
99
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
100
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
101
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
102
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
103
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
104
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
105
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
106
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
107
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
108
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
109
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
110
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
111
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
112
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
113
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
114
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
115
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
116
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
117
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
118
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
119
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
120
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
121
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
122
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
123
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
124
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
125
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
126
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
127
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
128
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
129
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
130
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
131
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
132
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
133
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
134
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
135
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
136
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
137
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
138
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
139
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
140
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
141
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
142
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
143
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
144
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
145
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
146
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
147
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
148
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
149
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
150
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
151
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
152
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
153
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
154
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
155
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
156
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
157
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
158
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
159
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
160
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
161
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
162
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
163
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
164
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
165
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
166
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
167
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
168
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
169
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
170
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
171
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
172
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
173
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
174
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
175
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
195
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
196
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
197
![](https://jiny-z.cnblogs.com/Images/OutliningIndicators/None.gif)
输出结果: