演算法學習 4 3 例題

2021-10-06 22:23:39 字數 1347 閱讀 6384

有乙個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 但很明顯,這樣做太麻煩。乙個較好的方法是使用常量陣列。...