/**1716*/
#include "stdio.h"
#include "string.h"
int card[4], ans[4];
int mk[4];
int num[10000]; //用来判断数字是否已产生
int first;
void print(int w, int lev){
int i;
mk[w] = 1;
ans[lev] = card[w];
for(i=0; i<4; i++){
if(mk[i]) continue;
print(i, lev+1);
}
if(lev==3 && !num[ans[0]*1000+ans[1]*100+ans[2]*10+ans[3]]){
if(first)
first=0;
else
printf(" ");
num[ans[0]*1000+ans[1]*100+ans[2]*10+ans[3]] = 1;
printf("%d%d%d%d", ans[0], ans[1], ans[2], ans[3]);
}
mk[w] = 0;
}
void main(){
int i, j, s, t, fst=1;
freopen("in.txt", "r", stdin);
while(1){
scanf("%d", card);
s = card[0];
for(i=1; i<4; i++){
scanf("%d", card+i);
s += card[i];
t = card[i];
for(j=i-1; j>=0; j--){
if(card[j]>t)
card[j+1] = card[j];
else
break;
}
card[j+1] = t;
}
if(!s) break;
if(fst) fst = 0;
else printf("\n");
mk[0] = mk[1] = mk[2] = mk[3] = 0;
memset(num, 0, sizeof(num));
for(i=0; i<4; i++){
while(!card[i] || card[i+1]==card[i]) i++; //去掉0开头,和有重复数字的。但这里只能去除开头重复,不能去掉非开头重复
first = 1;
print(i, 0);
printf("\n");
}
}
}
hdu 1716
最新推荐文章于 2021-02-16 20:21:26 发布