【练习题】打印一个字符串的全部子序列,包括空字符串

题目:打印一个字符串的全部子序列,包括空字符串

首先明确,子序列!=子串
最长公共子串要求在原字符串中是连续的,而子序列只需要保持相对顺序一致,并不要求连续。

例:“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");
}

这里写图片描述

猜你喜欢

转载自blog.csdn.net/lindaxym/article/details/81449816