有乙個5x4大小的迷宮,請你找出第一行第一列單元格到第四行第三列的最短路徑。
其中第一行第三列,第三行第三列,第四行第二列,第五行第四列有障礙物,無法通過。
用廣度優先搜尋
**————————————————————————
#include
struct node
;int
main()
, book[51]
[51]=
;//定義乙個用於表示走的方向的陣列
int next[4]
[2]=
,,,}
;int head, tail;
int i, j, k, n, m, startx, starty, p, q, tx, ty, flag;
scanf
("%d %d"
,&n,
&m);
for(i =
1; i <= n; i++
)for
(j =
1; j <= m; j++
)scanf
("%d"
,&a[i]
[j])
;scanf
("%d %d %d %d"
,&startx,
&starty,
&p,&q)
;//佇列初始化
head =1;
tail =1;
//往佇列插入迷宮入口座標
que[head]
.x = startx;
que[head]
.y = starty;
que[tail]
.s =0;
tail++
; book[startx]
[starty]=0
; flag =0;
//0表示未到達終點,1表示到達終點
//當佇列不為空時迴圈
while
(head < tail)
//如果到目標點了,停止擴充套件,任務結束,退出迴圈
if(tx == p && ty == q)}if
(flag ==1)
break
; head++;}
//列印佇列中末尾最後乙個點的步數
//注意tail是指向佇列隊尾的下乙個位置,所以需要-1
printf
("%d"
, que[tail -1]
.s);
return0;
}
結果:
演算法 動態規劃二(例題)
下面描述就是題意 有乙個由1.9組成的數字序列.問如果將m個加 號插入到這個數字序列中,在各種可能形成的 表示式中,值最小的那個表示式的值是多少 4 21 2 3 4 4 31 2 3 4 5 1924 include include include include include include ...
演算法學習之基礎題
基礎題之字串 題目 把手放在鍵盤上,稍不注意就會往右錯一位。q會變成w,j會變成k。輸入乙個錯位後敲出的字串,輸出打字員本來想打出的句子。分析 如何進行這樣的變換呢?一種方法是使用if語句或者switch語句,如if c w putchar q 但很明顯,這樣做太麻煩。乙個較好的方法是使用常量陣列。...
演算法學習之基礎題
基礎題之字串 題目 把手放在鍵盤上,稍不注意就會往右錯一位。q會變成w,j會變成k。輸入乙個錯位後敲出的字串,輸出打字員本來想打出的句子。分析 如何進行這樣的變換呢?一種方法是使用if語句或者switch語句,如if c w putchar q 但很明顯,這樣做太麻煩。乙個較好的方法是使用常量陣列。...