44i11 @ 2023-11-19 22:45:09
#include<bits/stdc++.h>
//#include<conio.h>
//#include<windows.h>
using namespace std;
int t[10],n,vis[10],m;
void print(int m){
for(int i=0;i<m;i++){
cout<<t[i]<<" ";
}
cout<<"\n";
}
bool pd(){
for(int i=1;i<=m;i++){
if(!vis[i]){
return 0;
}
}
return 1;
}
void dfs(int i,int step){
t[step]=i;
vis[i]=1;
if(pd()){
print(m);
return;
}
for(int j=1;j<=n;j++){
if(vis[j]){
continue;
}
vis[j]=1;
dfs(j,step+1);
vis[j]=0;
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
memset(vis,0,sizeof(vis));
dfs(i,0);
}
return 0;
}
by Christian_ @ 2024-02-19 18:08:30
#include <bits/stdc++.h>
using namespace std;
const int N=10;
int n,k;
int st[N],a[N];//st[]来表示第i个人是否选了
void dfs(int x){//x表示位置
if(x>k){
for(int i=1;i<=k;i++){
cout<<a[i]<<" ";
}cout<<endl;
return ;
}
for(int i=1;i<=n;i++){
if(st[i]==0){
st[i]=1;
a[x]=i;
dfs(x+1);
st[i]=0;
a[x]=0;
}
}
}
int main(){
scanf("%d%d",&n,&k);
memset(st,0,(k+1)*4);
dfs(1);
return 0;
}
@44i11