洛谷P1057 傳球遊戲 記憶化搜尋

2022-05-27 16:57:12 字數 760 閱讀 1619

點我進入題目

題目大意:n個小孩圍一圈傳球,每個人可以給左邊的人或右邊的人傳球,1號小孩開始,一共傳m次,請問有多少種可能的路徑使球回到1號小孩。

輸入輸出:輸入n,m,輸出路徑的數量。

資料範圍:40% 3<=n<=30 1<=m<=20 100% 3<=n<=30 1<=m<=30

我是這麼想的:膜擬過程,從1號小孩開始dfs,然後加乙個記憶化搜尋節省時間。

dfs(num,tim)表示球傳到第num個小孩,已經傳過tim次時候,d[num][tim]表示球傳到第num個小孩,已經傳過tim次時候已經記錄過的可能傳到1號小孩的次數。

剛開始的時候預設1號小孩只把球傳給2號小孩,因為傳給n號小孩和傳給2號小孩的情況是對稱的,所以乘以2,理論上節省一半時間(實際上由於記憶化搜尋,節省不了多少時間)

**如下:

/*

p1057 傳球遊戲

*/#include #include using namespace std;

int n,m;

int d[31][31];

int search(int num,int tim)

else if(d[num][tim]!=-1)return d[num][tim];

else return d[num][tim]=search(num==n?1:num+1,tim+1)+search(num==1?n:num-1,tim+1);

}int main()

洛谷 P1057 傳球遊戲

題目描述 上體育課的時候,小蠻的老師經常帶著同學們一起做遊戲。這次,老師帶著同學們一起做傳球遊戲。遊戲規則是這樣的 n個同學站成乙個圓圈,其中的乙個同學手裡拿著乙個球,當老師吹哨子時開始傳球,每個同學可以把球傳給自己左右的兩個同學中的乙個 左右任意 當老師在此吹哨子時,傳球停止,此時,拿著球沒有傳出...

洛谷 P1057 傳球遊戲

題目描述 上體育課的時候,小蠻的老師經常帶著同學們一起做遊戲。這次,老師帶著同學們一起做傳球遊戲。遊戲規則是這樣的 n個同學站成乙個圓圈,其中的乙個同學手裡拿著乙個球,當老師吹哨子時開始傳球,每個同學可以把球傳給自己左右的兩個同學中的乙個 左右任意 當老師在此吹哨子時,傳球停止,此時,拿著球沒有傳出...

P1057 傳球遊戲 洛谷

上體育課的時候,小蠻的老師經常帶著同學們一起做遊戲。這次,老師帶著同學們一起做傳球遊戲。遊戲規則是這樣的 n個同學站成乙個圓圈,其中的乙個同學手裡拿著乙個球,當老師吹哨子時開始傳球,每個同學可以把球傳給自己左右的兩個同學中的乙個 左右任意 當老師在此吹哨子時,傳球停止,此時,拿著球沒有傳出去的那個同...