저는 재귀를 사용하여 n 매개 변수에서 int 벡터를 생성하고이를 인터리브하는 permute 함수를 작성합니다. 세분화 오류가 발생하지만 작업을 시작하는 데 많은 어려움을 겪고 있습니다.()C++ - 순열 함수
void print(const vector<int>& v)
{
for (auto it = v.begin(); it != v.end(); ++it)
{
cout << *it << ' ';
}
cout << endl;
}
vector<vector<int> > interleave(int x, const vector<int>& v)
{
size_t i;
vector<vector<int> > results;
for (i=0;i<=v.size();i++)
{
vector<int> temp(v);
temp.insert(temp.begin()+i, x);
results.push_back(temp);
}
return results;
}
vector<vector<int> > permute(size_t n)
{
size_t i, j;
vector<vector<int> > v;
auto vectors = permute(n-1);
vector<vector<int> > results;
for (j=0;vectors.size();j++)
{
for (i=1;i<=n-1;i++)
{
vectors[j].push_back(i);
}
}
for (j=0;j<=vectors.size();j++)
{
for (i=1;i<=n-1;i++)
{
vector<vector<int> > temp = interleave(i,vectors[j]);
results.insert(results.end(), temp.begin(), temp.end());
}
}
return results;
}
int main(void)
{
size_t i;
vector<vector<int> > results = permute(3);
for (i=0;i<results.size();i++)
{
print(results[i]);
}
}
[작은 프로그램을 디버깅하는 방법] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/). –
디버거를 사용하여 코드를 단계별로 실행하는 것을 관찰 했습니까? –
'자동 벡터 = 순열 (n-1);'super suss를 보입니다. – Tas