携程笔试到底怎么做呀-第一题

鼠鼠太菜了,求大佬指点一下
第一题:用的全排列,加判断会不会有相邻元素之和都不是素数才统计到最终结果种,但是只通过了44%
    public static int func(int n){
        int[] used = new int[n+1];
             huisu(n,used);
             return result.size();
    }
    public static void huisu(int n,int[] used){
        if(list.size() == n){
            result.add(new ArrayList<>(list));
            return;
        }
        for(int i = 1;i <= n;i++){
            if(used[i] == 1){
                continue;
            }
            if(!list.isEmpty() && !isValid(list.get(list.size()-1),i)){
                continue;
            }
            used[i] = 1;
            list.add(i);
            huisu(n,used);
            list.remove(list.size()-1);
            used[i] = 0;
        }

    }
    public static boolean isValid(int m,int n){
        if(m+n == 6 || m+n == 4 || m+n == 8 || m+n == 9){
            return true;
        }
        return false;
    }

}
全部评论
你这个判断素数有问题,网上去看看吧
点赞
送花
回复
分享
发布于 2023-09-08 10:32 重庆
判断素数很简单 你只需要判断是否为20以内的素数(就八个)就好了,反正输入条件是2-10
点赞
送花
回复
分享
发布于 2023-09-08 10:43 四川
滴滴
校招火热招聘中
官网直投

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务