SDUT 動態規劃 走迷宮 1269

2021-10-04 17:23:11 字數 1618 閱讀 6533

走迷宮

pblem description

有乙個mn格的迷宮(表示有m行、n列),其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走,輸入這mn個資料和起始點、結束點(起始點和結束點都是用兩個資料來描述的,分別表示這個點的行號和列號)。現在要你程式設計找出所有可行的道路,要求所走的路中沒有重複的點,走時只能是上下左右四個方向。如果一條路都不可行,則輸出相應資訊(用-1表示無路)。

input

第一行是兩個數m,n(1< m, n< 15),接下來是m行n列由1和0組成的資料,最後兩行是起始點和結束點。

output

所有可行的路徑,輸出時按照左上右下的順序。描述乙個點時用(x,y)的形式,除開始點外,其他的都要用「->」表示。如果沒有一條可行的路則輸出-1。

sample input

5 41 1 0 0

1 1 1 1

0 1 1 0

1 1 0 1

1 1 1 1

1 15 4

sample output

(1,1)->(1,2)->(2,2)->(2,3)->(3,3)->(3,2)->(4,2)->(4,1)->(5,1)->(5,2)->(5,3)->(5,4)

(1,1)->(1,2)->(2,2)->(2,3)->(3,3)->(3,2)->(4,2)->(5,2)->(5,3)->(5,4)

(1,1)->(1,2)->(2,2)->(3,2)->(4,2)->(4,1)->(5,1)->(5,2)->(5,3)->(5,4)

(1,1)->(1,2)->(2,2)->(3,2)->(4,2)->(5,2)->(5,3)->(5,4)

(1,1)->(2,1)->(2,2)->(2,3)->(3,3)->(3,2)->(4,2)->(4,1)->(5,1)->(5,2)->(5,3)->(5,4)

(1,1)->(2,1)->(2,2)->(2,3)->(3,3)->(3,2)->(4,2)->(5,2)->(5,3)->(5,4)

(1,1)->(2,1)->(2,2)->(3,2)->(4,2)->(4,1)->(5,1)->(5,2)->(5,3)->(5,4)

(1,1)->(2,1)->(2,2)->(3,2)->(4,2)->(5,2)->(5,3)->(5,4)

#include

using

namespace std;

struct node

ls[1000];

int dx=

, dy=

;int bj[16]

[16], mapl[16]

[16];

int m, n, step, sum =

0, xz, yz;

void

dfs(

int x1,

int y1)

printf

("\n");

}else}}

}int

main()

return0;

}

動態規劃走樓梯

main.cpp 動態規劃走樓梯 created by liujan on 11 18 14.問題描述 乙個樓梯有20級,每次走1級或2級,從底走到 頂一共有多少種走法?分析 假設從底走到第n級的走法有f n 種,走到第n級 有兩個方法,乙個是從第 n 1 級走1步,另乙個是從第 n 2 級走2步,...

走迷宮 SDUT1269 ACM演算法設計

time limit 1000ms memory limit 65536k 有乙個m n格的迷宮 表示有m行 n列 其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走,輸入這m n個資料和起始點 結束點 起始點和結束點都是用兩個資料來描述的,分別表示這個點的行號和列號 現在要你程式設計找出...

動態規劃 走台階(入門1)

題目 有n級台階,乙個人每次上一級或者兩級,問有多少種走完n級台階的方法?分析 由分析可知 n階台階,只可能是從n 1或是n 2的台階上走上來的,台階n的階段依賴的是n 1和n 2的子階段,所以狀態轉移方程為dp n dp n 1 dp n 2 屬於最簡單的動態規劃問題 include define...