下面的递归+回溯算法代码的逻辑看不明白,麻烦详细说明一下逻辑,要求每行代码目标表达明确,最好同时使用文字描述一遍,感谢
#include <iostream>
#include <vector>
using namespace std;
vector<int> datas = { 1,2,3,4,5 };
vector<vector<int>> records;
void permutation(int position, int length, vector<int>& tmp)
{
if (length == 0)
{
records.push_back(tmp);
return;
}
for (int i = position;i < datas.size();i++)
{
tmp.push_back(datas[i]);
permutation(i + 1, length - 1, tmp);
tmp.pop_back();
}
}
int main()
{
vector<int> tmp;
for (int i = 1;i < datas.size();i++)
{
permutation(0, i, tmp);
}
return 0;
}