ブルーブリッジ:スーパーマリオ

スーパーマリオ

問題の説明

  ことをすべて知ってズーム スーパーマリオ である 探検家をジャンプで非常に良いが、彼は良いショーのジャンプであるが、それは時計を取った 回だけ前方にジャンプすることができます 段階または2つのステップを
そこ 回、彼が通過してい 記事⻓nは⽺⼩腸管、⼩チャンネルがあり、m個の整数ビットに配置されている番号のトラップを、 集合、すなわちA1、A2、ある ... .am、
どこに死すトラップSTART⽆容疑者。トラップの2次がある場合は明らかに、そしてメアリーもかかわらず、発射された ホップの生活が困難になります。
  ⼩⻓今のチャネル与えられたN- これらのトラップの、数および配置を。メアリーは位置から得た1 勝到達するために救済をジャンプどのように多くの、起動する (位置のnに他の側の利益を)。
START入力フォーマット
  最初の 二つの整数N⾏、M
  ⾏の第二ショットm個の整数は、トラップの位置を示します
出力フォーマット
  
整数。メアリージャンプnは表し例数を⽅
サンプルを失うSTART
4 1
2
サンプル出力
1
スケールデータと規則
  40> = N> = 3、M> = 1
  N> M。
  トラップが設置されることはありません1 およびnは上を
分析:⾯が、その道の階段とleetcodeに同様の問題は、階段を登ること⻓n度であることに注意してください
           ⽽個々のケースから1からて送信Nに、N-長⾛ - ⻓1度、それがV [1]初期化されている= 1、V [2]は、トラップが1でない場合、トラップがあり、0であります
           その後に係る状態遷移処理⽅V [I] = V [I - 1] + V [I - 2];決定された値v [n]は種の数である~~~

 

 

#include <iostream>
#include <vector>
using namespace std;
int main() {
 int n, m;
 cin >> n >> m;
 vector<int> v(n+1, -1);
 for(int i = 0; i < m; i++) {
     int temp;
     cin >> temp;
     v[temp] = 0;
 }
 v[1] = 1;
 v[2] = v[2] == 0 ? v[2] : 1;
 for(int i = 3; i <= n; i++) {
     if( v[i] != 0)
         v[i] = v[i-1] + v[i-2];
 }
 cout << v[n];
 return 0; 
}

 

公開された736元の記事 ウォンの賞賛123 ・は 80000 +を見て

おすすめ

転載: blog.csdn.net/S_999999/article/details/103392647