携程笔试到底怎么做呀-第一题
鼠鼠太菜了,求大佬指点一下
第一题:用的全排列,加判断会不会有相邻元素之和都不是素数才统计到最终结果种,但是只通过了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
送花
回复
分享
滴滴
官网直投
相关推荐
投递建信金科等公司8个岗位 > 我的求职思考
点赞 评论 收藏
转发
03-22 20:13
江苏国泰新点软件_技术研发部_Java开发工程师(准入职员工) 点赞 评论 收藏
转发
点赞 评论 收藏
转发