您的位置:首页 > 其它

全排列以及含重复数的全排列

2017-03-29 11:10 197 查看
去除重复数的全排列

如下是递归实现:(还可以使用字典序实现)


//arr数组中找重复数,如果找到了就不进行交换

bool isSwap(int* arr, int from, int to)
{
for(int i=from;i<to;i++)
{
if(arr[i]==arr[to])
{
return false;
}
}
return true;
}

void perm(int* arr, int from, int to)
{
if(from==to)
disp(arr, to+1);
else
{
for(int i=from;i<=to;++i)
{
if(!isSwap(arr,from,i))
continue;
swap(arr[i], arr[from]);
perm(arr, from+1, to);
swap(arr[i], arr[from]);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: