题干:
从1~n任意挑出r个数进行排列,请从小到大输出所有可能的排列结果。
如:n=5,r=2,则输出结果如下
1 2
1 3
1 4
1 5
2 1
2 3
2 4
2 5
3 1
3 2
3 4
3 5
4 1
4 2
4 3
4 5
5 1
5 2
5 3
5 4
数据范围:
3≤n,r≤6
0pts Code:
#include<bits/stdc++.h>
using namespace std;
int ans[10],vis[10];
int n,r;
void dfs(int t){
if(t==n){
for(int i=0; i<r; i++)
cout<<ans[i]<<' ';
cout<<endl;
return;
}
for(int i=1; i<=n; i++)
if(vis[i]==0){
ans[t]=i;
vis[i]=1;
dfs(t+1);
vis[i]=0;
}
}
int main(){
cin>>n>>r;
dfs(0);
return 0;
}