比较简单,主要是next_permutation()函数的适用,还有就是输出格式的控制。
#include <stdio.h>
#include <algorithm>
using namespace std;
int num[4];
int main()
{
int flag=-2;
while(~scanf("%d %d %d %d",&num[0],&num[1],&num[2],&num[3]))
{
if(num[0]==0&&num[1]==0&&num[2]==0&&num[3]==0)
break;
if(flag!=-2)
printf("\n");
sort(num,num+4);
flag=-1;
do
{
if(flag==num[0])
printf(" ");
if(flag!=-1&&flag!=num[0])
printf("\n");
if(num[0]==0)
continue;
flag=num[0];
printf("%d",num[0]*1000+num[1]*100+num[2]*10+num[3]);
}while(next_permutation(num,num+4));
printf("\n");
}
return 0;
}