思路:
看代码
需要用到 关于全排列 next_permutation() 函数的用法
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
int a[4],ans = 0;
while(~scanf("%d%d%d%d",&a[0],&a[1],&a[2],&a[3]))
{
if(a[0]+a[1]+a[2]+a[3] == 0)
break;
if(ans)
printf("\n");
ans = 1;
sort(a,a+4);
int flag = 0,temp;
do{
if(a[0]==0) //开头为0
continue;
else if(flag == 0) //输出的第一个数
{
printf("%d%d%d%d",a[0],a[1],a[2],a[3]);
flag = 1;
}
else if(temp == a[0]) //千位数相同的情况
printf(" %d%d%d%d",a[0],a[1],a[2],a[3]);
else //千位数相同的第一个数
printf("\n%d%d%d%d",a[0],a[1],a[2],a[3]);
temp = a[0]; //记录千位数大小
}while(next_permutation(a,a+4));
printf("\n");
}
return 0;
}