[恢]hdu 1716

2011-12-21 02:04:56

地址:http://acm.hdu.edu.cn/showproblem.php?pid=1716

题意:中文。

mark:dfs。

代码:

# include <stdio.h>
# include <algorithm>


using namespace std ;

int a[4], num[4], tab[10] ;
int flag ;


void dfs(int n)
{
int i ;
if (n == 4)
{
if (flag == 0) flag = 1 ;
else printf (" ") ;
printf ("%d%d%d%d", num[0], num[1], num[2], num[3]) ;
}
for (i = 0 ; i < 10 ; i++)
{
if (tab[i] != 0)
{
num[n] = i ;
tab[i]-- ;
dfs(n+1) ;
tab[i]++ ;
}
}
}


int main ()
{
char ch ;
int i, nCase = 1 ;
while (~scanf ("%d %d %d %d%*c", &a[0], &a[1], &a[2], &a[3]))
{
if (!(a[0] || a[1] || a[2] || a[3]))
break ;
for (i = 0 ; i < 10 ; i++)
tab[i] = 0 ;
for (i = 0 ; i < 4 ; i++)
tab[a[i]] ++ ;
if (nCase++ != 1) printf ("\n") ;
for (i = 1 ; i < 10 ; i++)
{
if (tab[i] != 0)
{
num[0] = i ;
tab[i]-- ;
flag = 0 ;
dfs(1) ;
tab[i]++ ;
printf ("\n") ;
}
}
}
return 0 ;
}



posted @ 2012-01-06 23:20  Seraph2012  阅读(140)  评论(0编辑  收藏  举报