#include <utility>
class Solution {
public:
// 2.使用了带有备忘录的递归,也可以理解成是另类的动态规划
    map<int,int> m;
    int jumpFloor(int number) {
        // 边界条件
        if (number==1) {
            return 1;
        }
        if (number==2) {
            return 2;
        }
        // 如果map中记录了数据的话,那么就直接返回
        if (m.find(number)!=m.end()) {
            return m.find(number)->second;
        }else {
            pair<int, int> p(number, (jumpFloor(number-1)+jumpFloor(number-2)));
            m.insert(p);
            return m.find(number)->second;
        }   
    }
};