java算法(1,2,3,5,7,11,13,17,19,23,29,31)12个元素,取出4个元
java算法(1,2,3,5,7,11,13,17,19,23,29,31)12个元素,取出4个元素的所有组合,值为40至47,并且组合不能重复,请用java编程。...
java算法(1,2,3,5,7,11,13,17,19,23,29,31)12个元素,取出4个元素的所有组合,值为40至47,并且组合不能重复,请用java编程。
展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)
2个回答
展开全部
感觉最简单应该是4层循环,就12个元素,也不用怎么优化。
public class Test {
public static void main(String []args){
int[] arr = {1,2,3,5,7,11,13,17,19,23,29,31};
for(int i=0;i<arr.length-3;i++){
for(int j=i+1;j<arr.length-2;j++){
for(int k=j+1;k<arr.length-1;k++){
for(int h=k+1;h<arr.length;h++){
int sum = arr[i]+arr[j]+arr[k]+arr[h];
if(sum>=40 && sum <=47){
System.out.println(sum+" "+arr[i]+" "+arr[j]+" "+arr[k]+" "+arr[h]);
}
}
}
}
}
}
}
更多追问追答
追问
我有一个问题
修改 数值后
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
// 既然你看不惯我那个方法,就给你个新的方法好了,以答治答。
import java.util.ArrayList;
import java.util.List;
public class Combination
{
public static void print(List list)
{
int sum = 0;
String str = "";
for(Object o : list)
{
String a = o.toString();
sum += Integer.parseInt(a);
str += a + " ";
}
if(sum > 39 && sum < 48){
System.out.println(str);
}
}
public static void combination(int n, int position, List choice_list, List current_choice)
{
for(int i = position; i < choice_list.size(); i++)
{
current_choice.add((Object) choice_list.get(i));
if(current_choice.size() == n)
{
print(current_choice);
}
else
{
combination(n, i + 1, choice_list, current_choice);
}
current_choice.remove(current_choice.size() - 1);
}
}
public static void main(String[] args)
{
List str_list = new ArrayList();
String str = "1,2,3,5,7,11,13,17,19,23,29,31";
String[] arr = str.split(",");
for(int i = 0; i < arr.length; i++){
str_list.add(arr[i]);
}
List current_choice = new ArrayList();
combination(4, 0, str_list, current_choice);
}
}
更多追问追答
追问
师傅终于出马啦
师傅问你个问题
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询