全排列-hdu1716
题目描述:
题目意思很简单,就是要我们输出全排列后的数据组成,但是要注意组成的数据是一个实数,并且千位数字相同的处在同一行中。
代码实现:
#include<stdio.h> #include<iostream> #include<algorithm> using namespace std; int main() { int a[4],t=0; int b[24]; while(~scanf("%d%d%d%d",&a[0],&a[1],&a[2],&a[3])&&a[0]+a[1]+a[2]+a[3]) { if(t!=0)//用于每一组数据前的空行,而第一组数据前是没有空行的 { printf("\n"); } t=1; sort(a,a+4); int i=0; do { if(a[0]!=0)//因为a[0]总是会因为next_permutation()函数而更新,所以当a[0]不为0时,就可以执行该函数 { b[i++]=a[0]*1000+a[1]*100+a[2]*10+a[3]; } }while(next_permutation(a,a+4)); for(int j=0;j<i;j++) { if(j==i-1) printf("%d\n",b[j]); else if(b[j]/1000==b[j+1]/1000)//保证千位数字相同的在同一行 printf("%d ",b[j]); else printf("%d\n",b[j]); } } return 0; }