二战幸存火星人,骗30分方法
  • 板块灌水区
  • 楼主huangjiaruidfp
  • 当前回复4
  • 已保存回复6
  • 发布时间2024/7/4 12:26
  • 上次更新2024/7/4 14:16:41
查看原帖
二战幸存火星人,骗30分方法
1070750
huangjiaruidfp楼主2024/7/4 12:26
#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/7/4 12:26
加载中...