dfs深さ優先検索
808 ワード
今日、桐桐の先生は数学の宿題を出して、数字1から数字nまでの連続自然数の配列をすべてリストすることを要求して、発生した任意の数字のシーケンスの中で重複する数字が現れないことを要求します.並べて数が多く、書き落としを恐れた桐桐は、コンピュータープログラミングで解決することにした.
入力は整数n(1≦n≦9)のみです.
出力は、1〜nからなる重複しないすべての数値シーケンスを辞書順に出力し、各行に1つのシーケンスがあり、各数値の間にスペースがある.
サンプル入力コピーサンプルデータ3サンプル出力
入力は整数n(1≦n≦9)のみです.
出力は、1〜nからなる重複しないすべての数値シーケンスを辞書順に出力し、各行に1つのシーケンスがあり、各数値の間にスペースがある.
サンプル入力コピーサンプルデータ3サンプル出力
#include
#include
int a[10],book[10],n;
void dfs(int step)
{
int i;
if(step==n+1)
{
for(i=1;i<=n;i++)
printf("%d ",a[i]);
printf("
");
return;
}
for(i=1;i<=n;i++)
{
if(book[i]==0)
{
a[step]=i;
book[i]=1;
dfs(step+1);
book[i]=0;
}
}
return;
}
int main()
{
scanf("%d",&n);
dfs(1);
return 0;
}