【发布时间】:2015-10-31 17:33:06
【问题描述】:
我已经看到了一些如何做到这一点的例子,比如这个:
void permutation(char * arr, int curr, int size)
{
if(curr == size-1)
{
for(int a=0; a<size; a++)
cout << arr[a] << "\t";
cout << endl;
}
else
{
for(int i=curr; i<size; i++)
{
swap(&arr[curr], &arr[i]);
permutation(arr, curr+1, size);
swap(&arr[curr], &arr[i]);
}
}
}
但是,我正在尝试创建一个只接受数组、大小和排列函数的 ostream 输出的函数....例如:
void Permutations(int* items, const int& size, ostream& out)
我无法仅用尺寸来解决如何做到这一点,究竟要如何做到这一点?
【问题讨论】:
-
你是什么意思“只是大小”?
-
是否有特殊原因要去掉
curr作为函数参数? -
std::next_permutation是一个很好的起点。 -
你这样做:
void Permutations(char * arr, int size) { return permutation(arr, 0, size) }。在这里,函数Permutations只接受数组及其大小。如果需要,您可以添加ostream参数。 -
这使得你什么时候可以修改size变量,但是什么时候声明size为const呢?
标签: c++