#include<bits/stdc++.h>
using namespace std;
int n,a[15],b;//n:一共的数字(1~n) a[]:结果 b:记录排列方法总数
bool f[10]={0};//f[]:记录当前数字是否被使用过
void dfs(int dp){
int i;
if(dp == n+1){
for(i=1;i<=n;i++)
cout<<a[i]<<" ";//打印结果
b++;//方法加一
cout<<endl;
return;//返回上一次调用此函数的地方
}
for(i=1;i<=n;i++){//每个
if(f[i] == 0){
a[dp] = i;
f[i] = 1;
dfs(dp+1);
f[i] = 0;
}
}
}
int main(){
cin>>n;
dfs(1);
cout<<b;
}
#include<bits/stdc++.h>
using namespace std;
int n,a[25],r;
void dfs(int dp){
int i;
if(dp == r+1){
for(i=1;i<=r;i++)
cout<<setw(3)<<a[i]<<" ";
cout<<endl;
return;
}
for(i=a[dp-1]+1;i<=n;i++){
a[dp] = i;
dfs(dp+1);
}
}
int main(){
cin>>n>>r;
dfs(1);
}
#include<bits/stdc++.h>
using namespace std;
int n,a[10],b;
void dfs(int dp){
int i;
if(dp == n+1){
for(i=1;i<=n;i++)
cout<<a[i]<<" ";
b++;
cout<<endl;
return;
}
for(i=1;i<=n;i++){
a[dp] = i;
dfs(dp+1);
}
}
int main(){
cin>>n;
dfs(1);
cout<<b;
}