社区
C++ 语言
帖子详情
大家帮忙给想个算法吧。
Kshape
2007-01-19 10:46:05
有这么一组数据。
1
3
4
5
10
6
2
5
7
8
9
12
11
想把数据分成3组,每组的总和相差尽量要小。
注意的是:单个数据不能更改,也就是以前的每个数都是一个整体,如果直接平均的话,就可能出现这种以外情况。
多谢大家。
...全文
349
7
打赏
收藏
大家帮忙给想个算法吧。
有这么一组数据。 1 3 4 5 10 6 2 5 7 8 9 12 11 想把数据分成3组,每组的总和相差尽量要小。 注意的是:单个数据不能更改,也就是以前的每个数都是一个整体,如果直接平均的话,就可能出现这种以外情况。 多谢大家。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Kshape
2007-01-19
打赏
举报
回复
skfox(sky)
=============
如果我要分10组如何办呢?
Kshape
2007-01-19
打赏
举报
回复
也就是说,以前的数据比如只有2 5 7,分组后不能出现3,4之类的数据,并且以前的数据个数不能减少,以前有多少个数据,分组后也应该有多少个数据。。
OOPhaisky
2007-01-19
打赏
举报
回复
注意的是:单个数据不能更改,也就是以前的每个数都是一个整体
----------------------------------------------------------------------------------
这个要求没有看懂。。。
taodm
2007-01-19
打赏
举报
回复
穷举肯定能得到最佳解。
skfox
2007-01-19
打赏
举报
回复
1,求总和A,B=A/3
2,排序C1, C2...CMAX
3,C1+CMAX+C2+C(MAX-1)...
3.1按照这种方式累加,如果出现了累加值大于B,且最后一个累加的数据是靠前的(最后一个数据小于倒
数第二个数据)则进行第4步
3.2按照这种方式累加,如果出现了累加值大于B,且最后一个累加的数据是靠后的(最后一个数据大于倒
数第二个数据),则放弃最后一个累加的数据,改用顺序的方式累加,比如本来是...+C7+C100的时候超
过了B,则改成...+C7+C8+C9直到大于B
4,没有累加的数据再做一遍3的超作
5,剩下的就是第3组数据了
caocheng8230
2007-01-19
打赏
举报
回复
使用穷举法
jiangbin00cn
2007-01-19
打赏
举报
回复
设待排序数组a[3][n]
首先数据排序排序大在前小在后 data[n]
for(i=0;i<n;i++)
{
if( a[k]总和最小 ) a[k][p]=data[i];
}
这里写的不详细,领会精神就好
C++ 语言
65,211
社区成员
250,515
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章