---------------大神来看---------------
有一串随机的正整数(不考虑大数),然后将这些正整数 ,分配到 N组, 使之 最大的一组 与 最小的一组 两组整数和 差值最小,不需要尽可能解(倒序贪婪,最小贪婪),只求最优解!
例如 30 20 30 20 20
分成n = 2组
1。30 30
2。20 20 20
算法之类的不是很懂,但这是我的一个代码。
我是这样想的。
一个数组内,里面有N+1个整数。
进行冒泡排序出最大的和最小的。
之后循环这个数组去取和。
//冒泡排序出最大和最小
int temp;
int[] noneSort = {30, 80, 80, 30, 88, 29, 88, 25, 25};
for(int i = 0; i < noneSort.length-1; i++){
for(int j = i + 1; j < noneSort.length; j++){
temp = noneSort[i];
if(noneSort[j] >= temp){
noneSort[i] = noneSort[j];
noneSort[j] = temp;
}
}
}
//输出打印
log.info("{}", noneSort);
int maxNum = noneSort[0];
int minNum = noneSort[noneSort.length - 1];
int max = 0, min = 0;
for(int i = 0; i < noneSort.length; i++){
if(noneSort[i] == minNum){ //如果等于最小值
min += noneSort[i];
}else if(noneSort[i] == maxNum){ //如果等于最大值
max += noneSort[i];
}
}
//输出打印
log.info("max: {}, min: {}", max, min);
结果就是如下:
[88, 88, 80, 80, 30, 30, 29, 25, 25]
max: 176, min: 50
15 回答8.1k 阅读
8 回答6.3k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答2.1k 阅读✓ 已解决
找最优解,可以看看遗传算法