dfs!!自己测试答案正确,为什么一个都通过不了
查看原帖
dfs!!自己测试答案正确,为什么一个都通过不了
888272
YMD18079987348楼主2024/4/9 14:53

求解,先不管超时,为什么我的答案也是错误的


import java.util.Scanner;
public class Main{
        static int counts = 0;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();//手指数
        int m = scanner.nextInt();//加数


        int[] nums = new int[n + 1];//方案数
        int[] start = new int[n + 1];

        for (int i = 1; i <= n; i++) {
            start[i] = scanner.nextInt();
        }

        boolean[] label = new boolean[n + 1];
        dfs(1, n, m, start, nums, label);
    }

    public static void dfs(int x, int n, int m, int[] start, int[] nums, boolean[] label) {

        if (x > n) {
            counts++;
            if (counts == m + 1) {
                for (int i = 1; i <=n ; i++) {
                    System.out.print(nums[i]);
                }
                System.out.println();
            }
            return;
        }

        for (int i = 1; i <= n; i++) {
                        if(counts==0){
                i=start[x];
            }

            if (!label[i]) {
                label[i] = true;
                nums[x] = i;
                dfs(x + 1, n, m, start, nums, label);
                label[i] = false;
                nums[x] = 0;
            }
        }
    }

}
2024/4/9 14:53
加载中...