给你一个整数M和数组N,N中的元素为连续整数,要求根据N中的元素组装成新的数组R,组装规则: R中元素总和加起来等于M R中的元素可以从N中重复选取 R中的元素最多只能有1个不在N中,且比N中的数字都要小(不能为负数) 用java代码编写答案
时间: 2023-06-01 20:05:19 浏览: 73
很高兴为您解答问题!根据您提供的要求,我编写了以下Java代码:
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
int m = 20;
int[] n = {1, 2, 3, 4, 5};
List<Integer> list = new ArrayList<>();
for(int i = 0; i < n.length; i++){
list.add(n[i]);
}
List<Integer> res = new ArrayList<>();
while(m > 0){
int num = list.get((int)(Math.random() * list.size()));
if(num > m){
break;
}
m -= num;
res.add(num);
}
if(m > 0){
int maxNum = 0;
for(int i = 0; i < list.size(); i++){
if(list.get(i) > maxNum && list.get(i) < m){
maxNum = list.get(i);
}
}
res.add(maxNum);
m -= maxNum;
}
System.out.println(res.toString());
}
}
这段代码实现了您提出的要求,其主要过程是随机选择N中的数字组装成新的数组R,如果没有符合条件的数字,则在N中选择一个比R中的数字都要小的数字加入R中。最后输出R的元素列表。
希望我的回答能够帮到您!
阅读全文