携程笔试到底怎么做呀-第一题
鼠鼠太菜了,求大佬指点一下
第一题:用的全排列,加判断会不会有相邻元素之和都不是素数才统计到最终结果种,但是只通过了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;
}
}
第一题:用的全排列,加判断会不会有相邻元素之和都不是素数才统计到最终结果种,但是只通过了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;
}
}
全部评论
判断素数很简单 你只需要判断是否为20以内的素数(就八个)就好了,反正输入条件是2-10
你这个判断素数有问题,网上去看看吧
相关推荐
点赞 评论 收藏
分享
04-03 22:39
重庆大学 Java 点赞 评论 收藏
分享