# include & ltstdio.h & gt
# include & ltstdlib.h & gt
# include & ltstring.h & gt
int?a[10],?書[10],?n,?k[10],?l;
作廢?dfs(int?步驟)
{
int?我?=?0;
如果(步?==?l?+?1)
{
if(a[1]?!=?0)
{
對於(我?=?1;?我?& lt=?l;?i++)
{
printf("%d ",a[I]);
}
printf(" \ n ");
}
回歸?;
}
對於(我?=?0;?我?& lt?l;?i++)
{
if(book[k[i]]?==?0)
{
壹個[步驟]?=?k[I];
book[k[i]]?=?1;
dfs(步?+?1);
book[k[i]]?=?0;
}
}
}
int?主要(無效)
{
memset(k,0,?sizeof(k));
memset(書,0,?sizeof(book));
int?n;
scanf("%d ",& ampn);
夏爾?buf[15]?=?"";
sprintf(buf,?" %d ",n);
l?=?strlen(buf);
int?我?=?0;
對於(我?=?0;?我?& lt?l;?i++)
k[i]?=?buf[i]?-?'0';
DFS(1);
系統(“暫停”);//如果編譯失敗,盡量刪除這句話。
回歸?0;
}C++版本:
# include & ltcstdio & gt
# include & ltcstdlib & gt
# include & ltcstring & gt
int?a[10],?書[10],?n,?k[10],?l;
作廢?dfs(int?步驟)
{
如果(步?==?l?+?1)
{
if(a[1]?!=?0)
{
for(int?我?=?1;?我?& lt=?l;?i++)
{
printf("%d ",a[I]);
}
printf(" \ n ");
}
回歸?;
}
for(int?我?=?0;?我?& lt?l;?i++)
{
if(book[k[i]]?==?0)
{
壹個[步驟]?=?k[I];
book[k[i]]?=?1;
dfs(步?+?1);
book[k[i]]?=?0;
}
}
}
int?主要(無效)
{
memset(k,0,?sizeof(k));
memset(書,0,?sizeof(book));
int?n;
scanf("%d ",& ampn);
夏爾?buf[15]?=?"";
sprintf(buf,?" %d ",n);
l?=?strlen(buf);
for(int?我?=?0;?buf[i]?!=?'\0';?i++)
k[i]?=?buf[i]?-?'0';
DFS(1);
回歸?0;
}