题目:打印一个字符串的全部子序列,包括空字符串
首先明确,子序列!=子串
最长公共子串要求在原字符串中是连续的,而子序列只需要保持相对顺序一致,并不要求连续。
例:“abc”
从位置0开始,有两种决策1、要;2、不要
向后走,每个位置同样两种决策,递归
递归结束就是走到了字符串最后
void printAllSub(string str, int i, string res)
{
if (i == str.length())
{
cout << res << endl;
return;
}
printAllSub(str, i + 1, res); //不要
printAllSub(str, i + 1, res + str[i]);//要
}
int main()
{
string a = "afgsch";
printAllSub(a, 0, "");
system("pause");
}