LC115 Distinct Subsequences

这种字符串题目,初看不好着手,八成又是动态规划题。用动态数组可以减少空间需求,这里没用。此外注意下第一行的初始化,和平常动归题略有不同。

 1 class Solution {
 2 public:
 3     int numDistinct(string s, string t) {
 4         if(t.size()>s.size()||t=="")
 5             return 0;
 6         int col=s.size()+1;
 7         int row=t.size()+1;
 8         vector<vector<int> > record(row,vector<int>(col,0));
 9         int i,j;
10         for(j=1;j<col;j++)
11             if(t[0]==s[j-1])
12                 record[1][j]=record[1][j-1]+1;
13             else
14                 record[1][j]=record[1][j-1];
15         for(i=2;i<row;i++)
16         {
17             for(j=2;j<col;j++)
18             {
19                 if(s[j-1]==t[i-1])
20                     record[i][j]=record[i-1][j-1]+record[i][j-1];
21                 else
22                     record[i][j]=record[i][j-1];
23             }
24         }
25         return record[row-1][col-1];
26     }
27 };
View Code

 

posted @ 2016-03-13 20:46  vaevaevae  阅读(146)  评论(0编辑  收藏  举报