#include<iostream>
#include<cstdio>
using namespace std;
int n,m;
int a[30],b[255];
void dfs(int step){
if(step==m+1){
for(int i=1;i<=m;i++){
cout<<a[i]<<' ';
}
cout<<endl;
return ;
}
else{
for(int i=1;i<=n;i++){
if(b[i]==0 && i>=a[step-1]){
a[step]=i;
b[i]=1;
dfs(step+1);
b[i]=0;
}
}
}
}
int main(){
freopen("A.in","r",stdin);
freopen("A.out","w",stdout);
cin>>n>>m;
dfs(1);
return 0;
}
共 9 条回复
没事,这不是成长啦嘛
这篇丢人的帖子我要删了不要用b数组
用printf!!
用cout会超时
递归的数字超过 20 就可能导致超时,这边建议您使用
递推for 循环试试~您不知道Liuseroj题目板没人吗咋还超时了呢?