演算法提高 超級瑪麗

2021-10-02 14:13:24 字數 853 閱讀 7034

大家都知道"超級瑪麗"是乙個很善於跳躍的探險家,他的拿手好戲是跳躍,但它一次只能向前跳一步或兩步。有一次,他要經過一條長為n的羊腸小道,小道中有m個陷阱,這些陷阱都位於整數字置,分別是a1,a2,…am,陷入其中則必死無疑。顯然,如果有兩個挨著的陷阱,則瑪麗是無論如何也跳過不去的。

現在給出小道的長度n,陷阱的個數及位置。求出瑪麗從位置1開始,有多少種跳躍方法能到達勝利的彼岸(到達位置n)。

第一行為兩個整數n,m

第二行為m個整數,表示陷阱的位置

乙個整數。表示瑪麗跳到n的方案數

在這裡給出一組輸入。例如:

4 1

2

在這裡給出相應的輸出。例如:

1
資料規模和約定

40>=n>=3,m>=1

n>m;

陷阱不會位於1及n上

這道題可以用遞迴來做,定義兩個xj,記錄陷阱的位置,對應位置的值置為1,dfs有乙個引數x,表示當前步數,xj[x]!=1(沒有踩到陷阱)時,判斷x是否等於n,相等cnt++(相等即代表一種方案走到了終點),如果不等於n,在x+1或x+2的條件下繼續遞迴dsf(x+1)和dfs(x+2)。

#include

using

namespace std;

int t,xj[

100]

, m, n, cnt=0;

void

dfs(

int x)}}

intmain()

dfs(1)

; cout << cnt << endl;

return0;

}

演算法提高 超級瑪麗

演算法提高 超級瑪麗 時間限制 1.0s 記憶體限制 256.0mb 問題描述 大家都知道 超級瑪麗 是乙個很善於跳躍的探險家,他的拿手好戲是跳躍,但它一次只能向前跳一步或兩步。有一次,他要經過一條長為n的羊腸小道,小道中有m個陷阱,這些陷阱都位於整數字置,分別是a 1,a2,a m,陷入其中則必死...

演算法提高 超級瑪麗

演算法提高 超級瑪麗 問題描述 大家都知道 超級瑪麗 是乙個很善於跳躍的探險家,他的拿手好戲是跳躍,但它一次只能向前跳一步或兩步。有一次,他要經過一條長為n的羊腸小道,小道中有m個陷阱,這些陷阱都位於整數字置,分別是a1,a2,am,陷入其中則必死無疑。顯然,如果有兩個挨著的陷阱,則瑪麗是無論如何也...

演算法提高 超級瑪麗

問題描述 大家都知道 超級瑪麗 是乙個很善於跳躍的探險家,他的拿手好戲是跳躍,但它一次只能向前跳一步或兩步。有一次,他要經過一條長為n的羊腸小道,小道中有m個陷阱,這些陷阱都位於整數字置,分別是a1,a2,am,陷入其中則必死無疑。顯然,如果有兩個挨著的陷阱,則瑪麗是無論如何也跳過不去的。現在給出小...