69,381
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
using namespace std;
//唯一性
bool can(long num, int n)
{
int len = 0;
while(num)
{
if(num%10 == n)
len++;
if(len >= 2)
return false;
num /=10;
}
return true;
}
//递归求全排列 num:数值、m:递归参数、n:表示1-n排列
void f(long num, int m, int n)
{
if(m > n)
return;
if(m == n)
cout << num << endl;
for(int i = 1; i <= n; i++)
{
if(can(num*10 + i, i))
f(num*10 + i, m + 1, n);
}
}
int main()
{
f(0, 0, 4);
return 0;
}