leecode動態規劃陣列矩陣
阿新 • • 發佈:2018-12-09
1.LIS
狀態設計:F[i]代表以A[i]結尾的LIS的長度 狀態轉移:F[i]=max{F[j]+1}(1<=j< i,A[j]< A[i]) 邊界處理:F[i]=1(1<=i<=n) 時間複雜度:O(n^2) int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); f[i]=1; } for(int i=1;i<=n;i++) for(int j=1;j<i;j++) if(a[j]<a[i]) f[i]=max(f[i],f[j]+1); for(int i=1;i<=n;i++) ans=max(ans,f[i]); printf("%d\n",ans); return 0; }
2.
class Solution { public: int minimumTotal(vector<vector<int> > &triangle) { for (int i = triangle.size() - 2; i >= 0; --i) for (int j = 0; j < i + 1; ++j){ if(triangle[i+1][j] > triangle[i+1][j+1]){ triangle[i][j] += triangle[i+1][j+1]; }else{ triangle[i][j] += triangle[i+1][j]; } } return triangle[0][0]; } };