問題描述
當你站在乙個迷宮裡的時候,往往會被錯綜複雜的道路弄得失去方向感,如果你能得到迷宮地圖,事情就會變得非常簡單。
假設你已經得到了乙個n*m的迷宮的圖紙,請你找出從起點到出口的最短路。
輸入
第一行是兩個整數n和m(1 <= n,m <= 100),表示迷宮的行數和列數。
接下來n行,每行乙個長為m的字串,表示整個迷宮的布局。字元』.』表示空地,』#』表示牆,』s』表示起點,』t』表示出口。
輸出
輸出從起點到出口最少需要走的步數。(你不能起出迷宮外)
樣例輸入
3
3s#t
.#....
樣例輸出
6
提示
此題預設是至少有一條路線可以走出的
原始碼1是抄別人的,沒搞懂,好像會把所有的路都遍歷一遍。寫的很高深,測試通過
原始碼2是自己寫的,測試不通過,但一直找不出問題所在,日後再找。
原始碼
原始碼1:
#include
#include
using
namespace
std;
int m,n;//n行m列
char
map[101][101];//地圖矩陣
int already[101][101];//已走地圖記憶
int min_count=0;
void cross(int u, int v, int i, int j)
t++;
if (v < m - 1 && map[u][v+1] != '#' && already[u][v+1]>t)//在迷宮內、右側非牆且此點沒有走過
if (u > 0 && map[u-1][v] != '#' && already[u-1][v]>t)
if (v > 0 && map[u][v-1] != '#' && already[u][v-1]>t)
if (u < n - 1 && map[u+1][v] != '#' && already[u+1][v]>t)
}int main()
if (map[i][j]=='t') }}
memset(already,1,sizeof(already));//按位元組為單位賦值:16843309
already[startx][starty]=0;
cross(startx,starty,endx,endy);
cout
0;}
原始碼2:
#include
using
namespace
std;
int row, column;
char
map[101][101] = ;
int f(int x, int y)//起點座標x,y
if (map[x][y] == '#')//此點不可作為起點
else
if (map[x][y] == 't')//起點即為終點
else}}
int min;
for (int i = 0; i < 4; i++)//找出最小值
}
}return -1;
}int main()
}}
int minstep = f(x, y);
cout
<< minstep << endl;
return
0;}
第9周程式設計作業
敲 是真的累,這章要打好多字 題目內容 設計乙個person類,包含name age 屬性以及對這些屬性操作的方法。實現並測試這個類。根據類的封裝性要求,把name age 宣告為私有的資料成員,宣告公有的成員函式register showme 來訪問這些屬性,在register 函式中對資料成員進...
C 高階程式設計(第9版) 第06章 陣列
好久沒發東西了 一停下來就會變懶。雖然沒完成,也就是它吧 以下正文 本章要點 1 簡單陣列 2 多維陣列 3 鋸齒陣列 4 array類 5 作為引數的陣列 6 列舉 7 元組 8 結構比較 同一型別和不同型別的多個物件 如果需要使用同一型別的多個物件,就可以使用集合 參見第10章 和陣列。c 用特...
票統計(C程式設計高階第2周)
問題描述 有乙個小型的報賬系統,它有如下功能 1 統計每個人所報發票的總錢數 2 統計每類發票的總錢數 將此系統簡化為如下 假設發票類別共有a b c三種 一共有三個人,id分別為1 2 3。輸入 系統輸入包含三行,每行第乙個數為人員id 整型,1或2或3 第二個數為發票總張數 張數不超過100 之...