站外题求助
  • 板块学术版
  • 楼主JFY2013
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/10/22 21:48
  • 上次更新2024/10/23 07:58:52
查看原帖
站外题求助
1018999
JFY2013楼主2024/10/22 21:48

题干:

从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;
}
2024/10/22 21:48
加载中...