#include <vector>
class Solution {
  public:
    int LIS(vector<int>& arr) {
        int len = arr.size();
        if (!len) return len;
        vector<int> dp(len, 1); //记录以i位置结尾的最长上升子序列的长度
        int res = 1, tmp;
        for (int i = 1; i < len; i++) {
            for (int j = 0; j < i; j++) {
                if (arr[i] > arr[j] && dp[i] < dp[j] + 1) { 
                    dp[i] = dp[j] + 1;
                    res = dp[i] > res ? dp[i] : res;
                }
            }
        }
        return res;
    }
};