求组,全排列做法,30分
查看原帖
求组,全排列做法,30分
137387
风雷天生楼主2024/6/22 11:05
#include<bits/stdc++.h>
using namespace std;
int n , m , a[10005] , visit[10005] , ans[10005] , step , flag; 
inline void dfs(int x){
	if(flag==1) return;
	if( x==n+1 ){
		step++;
		if(step==m+1){
			flag = 1;
			for(int i=1;i<=n;i++) cout << a[ ans[i] ] << " ";
		}
		return;
	}
	// 下标做全排列 
	for(int i=1;i<=n;i++){
		if( visit[i]==0 ){
			visit[i] = 1;
			ans[x] = i;
			dfs(x+1);
			visit[i] = 0;
		}
	}
}
int main() {
	
	cin >> n >> m;
	for(int i=1;i<=n;i++) cin >> a[i];
	dfs(1);
	
	return 0;
}

2024/6/22 11:05
加载中...