這是一個類的方法,用於查找以三維陣列表示的三維迷宮的出口。數組本身包含長度爲6或1或0的字符串。字符串中的'1'表示您可以朝該方向移動。例如,如果當前數組元素的字符串是100001,這意味着您可以向北移動,也可以向下移動一個級別。位串對應於東南向西南向上的向下。此方法目前尚未完成,因此我知道它尚未找到可行的解決方案,但最終的switch語句在運行時會導致數組超出界限錯誤。我將三維數組描述爲一個三維立方體,其中outtermost數組代表垂直軸,中間數組代表z軸進出頁面,最裏面的數組代表水平x軸。當在迷宮中的當前單元格中時,您會查看字符串中的每一位。對於每一個可能的舉動,你把這個舉動加到q上。一旦完成查看字符串,就會按照首先添加到隊列中的方向移動並重復。任何幫助是極大的讚賞。什麼導致數組越界運行時錯誤?
void maze::solve(int startlevel, int startrow, int startcol, int endlevel, int endrow, int endcol)
{
position current, exit;
current.level = startlevel;
current.row = startrow;
current.col = startcol;
exit.level = endlevel;
exit.row = endrow;
exit.col = endcol;
q.push('0');
while (!q.empty())
{
if (current == exit)
{
cout << "exit found" << endl;
return;
}
if (mazeGraph[current.level][current.row][current.col].at(0) == '1')
q.push('n');
if (mazeGraph[current.level][current.row][current.col].at(1) == '1')
q.push('e');
if (mazeGraph[current.level][current.row][current.col].at(2) == '1')
q.push('s');
if (mazeGraph[current.level][current.row][current.col].at(3) == '1')
q.push('w');
if (mazeGraph[current.level][current.row][current.col].at(4) == '1')
q.push('u');
if (mazeGraph[current.level][current.row][current.col].at(5) == '1')
q.push('d');
if (q.front() == '0')
q.pop();
switch (q.front())
{
case 'n':
current.row -= 1;
case 'e':
current.col += 1;
case 's':
current.row += 1;
case 'w':
current.col -= 1;
case 'u':
current.level += 1;
case 'd':
current.level -= 1;
}
}
return;
}
我試圖這樣做使用 「如果(current.level <0 || current.level> = this.numlevels) \t \t { \t \t \t COUT << 「出界」 << ENDL ; \t \t}「 但編譯器說」this「需要類類型 – Flower