打印所有子序列
子序列:子序列不要求所选的字母连续,只要求是按原有次序组成就行
void printAllSub(string source, int index, string res)
{
if (source.size() == index)
{
cout << res << endl;
return;
}
printAllSub(source, index + 1, res + source[index]);
printAllSub(source, index + 1, res);
}
打印字符串的全排列
void printAllPermutations(string str, int curIndex)
{
if (curIndex == str.size())
{
cout << str << endl;
}
// 将该位置之后的每个元素都与当前位置交换
for (int j = curIndex; j < str.size(); j++)
{
swap(str[curIndex], str[j]);
printAllPermutations(str, curIndex + 1);
swap(str[curIndex], str[j]);
}
}
母牛每年只生一只母牛,新出生的母牛成长三年后也能每年生一只母牛,假设牛不会死,求N年后,母牛的数量。要求时间复杂度O(N)
int cowNumber1(int n)
{
if (n < 1) {
return 0;
}
if (n == 1 || n == 2 || n == 3) {
return n;
}
return cowNumber1(n - 1) + cowNumber1(n - 3);
}