20分求助
查看原帖
20分求助
1200401
wnqnld_llx楼主2024/10/12 20:48

TLE

#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[10001],num[10001],vis[10001];
void print(){
	for(int i=1;i<=n;i++) cout<<num[i]<<" ";
}
int p=0,it=-3;
void dfs(int i){
	if(i==n+1){
		p++;
		bool flag=1;
		for(int i=1;i<=n;i++){
			if(a[i]!=num[i]) flag=0;
		}
		if(flag){
			it=p;
		}
		if(p==it+m&&it!=-3){
			print();
		}
		return ;
	}
	for(int j=1;j<=n;j++){
		if(!vis[j]){
			vis[j]=1;
			num[i]=j;
			dfs(i+1);
			vis[j]=0;
		}
	}
}
signed main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	dfs(1);
	return 0;
}
2024/10/12 20:48
加载中...