C語言 超級瑪麗

2021-09-07 10:19:31 字數 1026 閱讀 4342

演算法提高 超級瑪麗  

時間限制:1.0s   記憶體限制:256.0mb

問題描述

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

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

輸入格式

第一行為兩個整數n,m

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

輸出格式

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

樣例輸入

4 12

樣例輸出 1

資料規模和約定

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

n>m;

陷阱不會位於1及n上

注釋:思路不難,見**注釋。

1/*2

思路:3

設temp處有陷阱,且temp-1公尺處的方法數為:b[temp-1],則b[temp+1]=b[temp-1],且到temp+2處的方法數也為b[temp-1],即:b[temp+1]=b[temp-1]=b[temp+2].

4綜上b[i]=b[i-1]+b[i-2];

5由題意知b[1]=b[2]=1;

6設有陷阱的i公尺處的方法數為b[i]=0。 7*/

8 #include9

intmain()

16int flag=0;//

標記是否有相鄰的陷阱

17for(int i=1;i<=m;i++)

24if(flag==1)//

若有相鄰的陷阱,必死無疑

25 printf("0"

);26

else

33 printf("%d"

,b[n]);34}

35return0;

36 }

《超級瑪麗》3

第三階段 目標 實現水平方向和豎直方向上的碰撞,更具有真實感。1 要想解決水平方向的碰撞,就要先明白乙個問題,地圖上的哪些東西是不能夠穿過的,也就是說要先定義好地圖上的某些可供碰撞檢測的物體磚塊型別。如圖 水平檢測函式的開頭準備工作 為了簡化水平方向的檢測,因為馬里奧的錨點是中心位置,所以左右兩邊的...

演算法提高 超級瑪麗

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

演算法提高 超級瑪麗

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