摘要: 字符串处理与二维dp设置二维数组v[i][j]表示S串中前i个字母的子串中包含多少个T串中前j个字母的子串”这样的问题记为A[i][j]。 可以得到递推式 :if(S[i-1] == T[j-1]) A[i][j] = A[i-1][j-1] + A[i-1][j];else A[i][j] = A[i-1][j];class Solution {public: int numDistinct(string S, string T) { int m=S.size(); int n=T.size(); vector<vector<int>> v(m... 阅读全文
posted @ 2013-05-18 21:37 代码改变未来 阅读(425) 评论(0) 推荐(0) 编辑
摘要: 合并数组求中位数class Solution {public: double findMedianBaseCase(int med, int C[], int n) { if (n == 1) return (med+C[0])/2.0; if (n % 2 == 0) { int a = C[n/2 - 1], b = C[n/2]; if (med <= a) return a; else if (med <= b) return med; else /* med > b */ return b; } else { int a = C[n/2... 阅读全文
posted @ 2013-05-18 20:26 代码改变未来 阅读(481) 评论(0) 推荐(0) 编辑
摘要: class Solution {public: int maxSubArray(int A[], int n) { int sum=A[0]; int b=sum; for(int i=0;i<n;i++) { if(i>0)sum+=A[i]; if(sum>b)b=sum; if(sum<0&&i!=n-1) { sum=0; } } return b; ... 阅读全文
posted @ 2013-05-18 15:20 代码改变未来 阅读(106) 评论(0) 推荐(0) 编辑