[藍橋杯][演算法提高VIP]超級瑪麗
題目描述
大家都知道" 超級瑪麗" 是一個很善於跳躍的探險家,他的拿手好戲是跳躍,但它一次只能向前跳一步或兩步。有一次,他要經過一條長為n的羊腸小道,小道中有m個陷阱,這些陷阱都位於整數位置,分別是a1,a2,....am,陷入其中則必死無疑。顯然,如果有兩個挨著的陷阱,則瑪麗是無論如何也跳過不去的。
現在給出小道的長度n,陷阱的個數及位置。求出瑪麗從位置1開始,有多少種跳躍方法能到達勝利的彼岸(到達位置n)。
資料規模和約定
40> =n> =3,m> =1
n> m;
陷阱不會位於1及n上
輸入
第一行為兩個整數n,m
第二行為m個整數,表示陷阱的位置
輸出
一個整數。表示瑪麗跳到n的方案數
樣例輸入
4 1 2
樣例輸出
1
記憶搜尋比dp容錯率低,dp的初始化1和2中忘記考慮1和2中有沒陷阱就gg了,這題是斐波那契多了是bool陣列
import java.util.Scanner;
public class 超級瑪麗 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
is = new boolean[n+10];//n+1還是會越界,原因是陷阱的用例,但題目給了不超過40,這麼小的區間直接定值開個50是很perfect的~
memo = new int[n+10];
for(int i=0;i<m;i++)
is[in.nextInt()] = true;
System.out.println(f(n));
}
static int[] memo;
static boolean[] is;
static int f(int n) {
if(memo[n]!=0)
return memo[n];
if(is[n])
return 0;
if(n==1 || n==2)
return 1;
memo[n] = f(n-1)+f(n-2);
return memo[n];
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
int[] dp = new int[50];
boolean[] is = new boolean[50];
for(int i=0;i<m;i++)
is[in.nextInt()] = true;
if(!is[1])
dp[1]=1;
if(!is[2])
dp[2]=1;
for(int i=3;i<=40;i++)
if(!is[i])
dp[i] = dp[i-1] + dp[i-2];
System.out.println(dp[n]);
}
}
相關文章
- [藍橋杯][演算法提高VIP]尤拉函式演算法函式
- [藍橋杯][演算法提高VIP]大數加法演算法
- [藍橋杯][演算法提高VIP]奪寶奇兵 dp演算法
- [藍橋杯][演算法提高VIP]分蘋果 線段樹演算法蘋果
- 演算法提高 超級瑪麗演算法
- 題目 1501: [藍橋杯][演算法提高VIP]分蘋果演算法蘋果
- [藍橋杯][演算法提高VIP]最大乘積 貪心 雙指標演算法指標
- 藍橋杯 -- 演算法提高 身份證號碼升級演算法
- 藍橋杯演算法提高——字串匹配(Java)演算法字串匹配Java
- 藍橋杯 演算法提高 字串壓縮演算法字串
- [藍橋杯][演算法訓練VIP]方格取數演算法
- 藍橋杯_演算法提高_身份證升級(簡單字元處理)演算法字元
- 藍橋杯-班級活動
- 2016藍橋杯演算法提高——身份證號碼升級演算法
- 藍橋杯 演算法提高 拿糖果(完全揹包dp)演算法
- [藍橋杯][演算法提高VIP]上帝造題五分鐘 (線段樹+區間最小值)演算法
- Java實現 藍橋杯 演算法提高 八數碼(BFS)Java演算法
- 藍橋杯—演算法訓練演算法
- 藍橋杯--演算法訓練演算法
- [藍橋杯][基礎練習VIP]矩形面積交
- 藍橋杯備忘錄——超聲波
- 藍橋杯 排序排序
- [Java] 藍橋杯ADV-203 演算法提高 8皇后·改Java演算法
- 藍橋杯 演算法提高 P0102(Java解題)演算法Java
- 藍橋杯 (java) 第39級階梯Java
- 問題 1462: [藍橋杯][基礎練習VIP]Huffuman樹
- [Java] 藍橋杯ADV-213 演算法提高 3-2求存款Java演算法
- 藍橋杯-N皇后
- 藍橋杯真題
- 發現一個可以練習藍橋杯VIP題目的網址
- [Java] 藍橋杯ADV-185 演算法提高 五次方數Java演算法
- [Java] 藍橋杯ADV-147 演算法提高 學霸的迷宮Java演算法
- 藍橋杯 (java)演算法訓練 數對Java演算法
- 演算法訓練 字首表示式 (藍橋杯)演算法
- 藍橋杯年號字串字串
- 藍橋杯-帶分數
- 藍橋杯-翻硬幣
- 藍橋杯-螞蟻感冒