为什么五六个re
查看原帖
为什么五六个re
1301769
zsnh楼主2024/3/23 21:38
import java.util.Scanner;

public class Main {
	
	public static int n;
	public static int[] arr=new int[n+10];
	public static int[] arr2=new int[n+10];
	public static boolean[] flag=new boolean[n+10];
	public static int[][] arr1=new int[1000][n+10];
	public static int count=0;
	public static int success;
	
	public static void dfs(int u) {
		
		if(u>n) {
			int num=0;
			count++;
			for(int i=1;i<=n;i++) {
				arr1[count][i]=arr[i];
				if(arr[i]==arr2[i]) {
					num++;
				}
			}
			if(num==n) {
				success=count;
			}
			return;
		}
		
		for(int i=1;i<=n;i++) {
			if(!flag[i]) {
				flag[i]=true;
				arr[u]=i;
				dfs(u+1);
				flag[i]=false;
			}
		}
	}	
	
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		n=scanner.nextInt();
		int r=scanner.nextInt();
		for(int i=1;i<=n;i++) {
			arr2[i]=scanner.nextInt();
		}
		dfs(1);
		int index=success+r;
		if(index<=count) {
			for(int i=1;i<=n;i++) {
				System.out.print(arr1[index][i]+" ");
			}
		}
	}

}
2024/3/23 21:38
加载中...