hdu 1716 排列二 输出几个数字的全排列
hdu 1716 排列2输出几个数字的全排列排列2Time Limit: 1000/1000 MS (Java/Others)Memory Limit: 32768/32
hdu 1716 排列2 输出几个数字的全排列
排列2Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2611 Accepted Submission(s): 1016
Problem DescriptionInputOutputSample InputSample Output#include<stdio.h>#include<stdlib.h>int cmp(const void *a,const void *b);int cmp(const void *a,const void *b){ return *(int*)a-*(int*)b;}int main(){ int a[5]={1}; int i,j,k,p,m,q=0; int s[100]; while(scanf("%d%d%d%d",&a[1],&a[2],&a[3],&a[4])!=EOF) { if(a[1]+a[2]+a[3]+a[4]==0) break; m=0; if(q)printf("\n"); q++; for(i=1;i<=4;i++) for(j=1;j<=4;j++) if(i!=j) for(k=1;k<=4;k++) if(k!=i&&k!=j) for(p=1;p<=4;p++) if(p!=i&&p!=j&&p!=k&&a[i]!=0) s[m++]=a[i]*1000+a[j]*100+a[k]*10+a[p]; //暴力出所有情况 qsort(s,m,sizeof(int),cmp); printf("%d",s[0]); i=1; while(i!=m) { if(s[i]/1000!=s[i-1]/1000) printf("\n%d",s[i]); else if(s[i]!=s[i-1]) printf(" %d",s[i]); i++; } printf("\n"); } return 0; }