排列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)    收藏  举报

导航