排列2 pe了好几次。。悲剧
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
int main( )
{
char str[10], ch[10];
int len, flag, a[10], i, flag1, k = 0;
while (1)
{
flag1 = 0;
for ( i = 0; i < 4; i++)
scanf("%d",&a[i]), str[i] = a[i] + '0';
if ( !( a[0] || a[1] || a[2] || a[3]) )
break;
if(k)
printf("\n");
k++;
str[i] = '\0';
len = strlen( str );
sort(str,str + len);
if (str[0] != '0')
printf("%s",str), flag1 = 1;
strcpy(ch, str);
flag = 0;
while (next_permutation(str, str + len) )
{
if (str[0] == '0')
continue;
if( str[0] != ch[0] &&flag1)
puts(""), flag = 1;
if (!flag1) {
printf("%s",str), flag1 = 1;
strcpy(ch, str);
continue;
}
if (flag)
printf("%s",str);
else
printf(" %s",str);
flag = 0;
strcpy(ch, str);
}
printf("\n");
}
return 0;
}
posted on 2011-07-28 10:09 more think, more gains 阅读(173) 评论(0) 收藏 举报
浙公网安备 33010602011771号