给你一个整数M和数组N,N中的元素为连续整数,要求根据N中的元素组装成新的数组R,组装规则: R中元素总和加起来等于M R中的元素可以从N中重复选取 R中的元素最多只能有1个不在N中,且比N中的数字都要小(不能为负数) 用java代码编写答案
时间: 2023-06-01 07:05:19 浏览: 52
很高兴为您解答问题!根据您提供的要求,我编写了以下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的元素列表。
希望我的回答能够帮到您!
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)