知识点:全排列函数 next_permutation( , );

当然,暴力也可以解决。
#include <cstdio>
#include <cstdlib>
#include <algorithm> //包含于头文件<algorithm>
using namespace std;
inline int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int main()
{
int a[4];
bool flag=0;
while(scanf("%d%d%d%d",&a[0],&a[1],&a[2],&a[3])!=EOF)
{
if(!a[0]&&!a[1]&&!a[2]&&!a[3]) break;
if(flag) putchar('\n');
qsort(a,4,sizeof(int),cmp);
while(a[0]==0) next_permutation(a,a+4); //next_permutation( ,)的用法
int a0=a[0],a1=a[1],a2=a[2],a3=a[3],tmp=a[0];
while(1)
{
printf("%d%d%d%d",a[0],a[1],a[2],a[3]);
next_permutation(a,a+4);
if((a[0]==a0&&a[1]==a1&&a[2]==a2&&a[3]==a3)||a[0]==0) break;
if(a[0]==tmp) putchar(' ');
else
{
tmp=a[0];
putchar('\n');
}
}
putchar('\n');
flag=1;
}
return 0;
}
本文介绍了一个使用next_permutation函数实现的全排列算法示例,并通过一个具体的C++代码片段展示了如何利用此函数来生成所有可能的排列组合。此外,文中还涉及了qsort函数的应用,用于确保生成的排列按特定顺序输出。
1932

被折叠的 条评论
为什么被折叠?



