完全な配列の問題
自然数nを出力するように配置された全ての別個の許容配列、すなわち、n個の全体構成の任意の数を生成し、重複する番号が表示さが必要です。
/ *問題解決のアイデア:
その数は、ライセンス供与されたと仮定すると、問題を解決するために、箱の内部にソートカードに相当します
* /
#include<stdio.h>
int a[10],book[10]={0};//a代表盒子,book代表手上的牌
int n;//n代表1~n
void dfs(int step){
int i;
if(step==n){
for(i=0;i<n;i++){
printf(" %d",a[i]);
}
printf("\n");
return;
}
for(i=0;i<n;i++){
if(book[i]==0){
a[step]=i+1;//将手上的牌放进盒子中去
book[i]=1;//表示牌已经不在手上
dfs(step+1);//递归
book[i]=0;//如果返回,就将牌从盒子里面抽出
}
}
}
int main(){
scanf("%d",&n);
dfs(0);
return 0;
}