社区
数据结构与算法
帖子详情
数据组合问题
上官云峰
2009-07-14 09:54:25
有一组数据
2 4.04
3 1.5
4 4.12
5 1.5
6 2.64
7 3.31
8 4.8
9 9.6
10 9.6
假如我给个合计值是19.2 那么应该是9和10的合计;如果合计值是24 那么应该是8、9、10的合计
这个算法怎么写[我确定拆分出来的一定是一组数据]
...全文
60
19
打赏
收藏
数据组合问题
有一组数据 24.04 31.5 44.12 51.5 62.64 73.31 84.8 99.6 109.6 假如我给个合计值是19.2 那么应该是9和10的合计;如果合计值是24 那么应该是8、9、10的合计 这个算法怎么写[我确定拆分出来的一定是一组数据]
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
绿色夹克衫
2009-07-16
打赏
举报
回复
确实是背包问题,而且是01背包,最近讨论的很多,LZ看看这个帖子吧
http://topic.csdn.net/u/20090511/23/a482be66-6598-46fa-be19-e7e356e2244b.html
(每次都推荐自己发言的帖子,都有点不好意思了,其实主要是因为好找,其实关于背包的帖子挺多的,LZ可以自己搜索一下)
firePhoenix1981
2009-07-15
打赏
举报
回复
递归实现:
#include "stdio.h"
int bag_loop(int A[], int M[], int total)
{
int i,j;
for(i=1;i<=A[0];i++)
{
if(1==M[i]){
continue;
}
M[i]=1;
if(total==A[i]){
printf("%4d\n", A[i]);
return 1;
}
if(total>A[i]){
if(0!=bag_loop(A, M, total-A[i])){
printf("%4d\n",A[i] );
return 1;
}
}
M[i]=0;
}
return 0;
}
int main(void)
{
int A[]={9, 404, 15, 412, 15, 264, 331, 48, 96, 96};
int M[]={0, 0 , 0, 0, 0, 0, 0, 0, 0, 0};
int i;
/*use the normal algorithm*/
bag_loop(A, M, 361);
for(i=1; i<=A[0]; i++)
{
printf("%4d", M[i]);
}
printf("\n");
return 0;
}
千与
2009-07-15
打赏
举报
回复
如果数据量很小,可以考虑先对数据(实型)从小到大进行排序,然后执行累加操作,得到实际需要的合计值(如果存在),返回条目编号序列;
如果数据量较大,可以考虑建立排序二叉树,通过遍历排序二叉树,累加合计总数,返回条目编号序列。
showjim
2009-07-15
打赏
举报
回复
[Quote=引用 13 楼 tanwan 的回复:]
背包小数如何做?
[/Quote]
小数和整数与思路无关吧,2位小数*100就化成整数问题了,难道题目里面有无限小数?
donkey301
2009-07-14
打赏
举报
回复
恩,的确是。石头的价值就可以认为正比于质量。
jlp999
2009-07-14
打赏
举报
回复
如果数据不多,直接做数据表格映射和值就好。
如:
4.04->2
5.54->2,3
9.66->2,3,4
5.62->3,4
……
fire_woods
2009-07-14
打赏
举报
回复
一组数就是对应的石头的质量,你要求的那个数就是背包最多能装的质量.
用背包问题求最优解,如果刚好装满,就是你要的解.
上官云峰
2009-07-14
打赏
举报
回复
怎么出来啊,给个方法啊
fire_woods
2009-07-14
打赏
举报
回复
不用连续是背包问题.
上官云峰
2009-07-14
打赏
举报
回复
不用连续,只要找出来就可以
上官云峰
2009-07-14
打赏
举报
回复
上面的数据是两列 前面的是ID,后面的是数值
2 4.04
3 1.5
4 4.12
5 1.5
6 2.64
7 3.31
8 4.8
9 9.6
10 9.6
hlwang_1984
2009-07-14
打赏
举报
回复
思考中。。。
fire_woods
2009-07-14
打赏
举报
回复
需要连续否?
比如2,4可以吗?
ltmit
2009-07-14
打赏
举报
回复
顶7楼。
tanwan
2009-07-14
打赏
举报
回复
背包小数如何做?
firePhoenix1981
2009-07-14
打赏
举报
回复
嗯,背包问题从思想上来说应该可以
我开始太呆板了
fire_woods
2009-07-14
打赏
举报
回复
google 背包问题.
firePhoenix1981
2009-07-14
打赏
举报
回复
先对数据从大到小排序,然后小于(等于)待合计的数据开始出递归就可以解出来,不过复杂度可能大了些
背包的话,如何弄?可否详细说下
数据
结构+算法综合资料库
数据
结构与算法综合资料库(CHM) 程序员必备的基础资料,对
数据
结构与算法很详细的讲解,里面还有许多示例,大家可以参考,学习编程语言都要用到的基础资料。初级走向高级必修的内功心法!
Tianlesoftware Oracle 学习手册(v1.0)高清完整PDF版
Tianlesoftware Oracle 学习手册(v1.0)
ACM超级经典算法大集合
ACM超级经典算法大集合。大家都知道acm大赛对计算机专业的大学生说是很有用的
jQuery EasyUI 1.2.4 API 中文文档.chm
本 chm 文档是根据博客园“风流涕淌”的《jQuery EasyUI 1.2.4 API 中文文档(完整)目录》整理而成 http://www.cnblogs.com/Philoo/archive/2011/11/17/jeasyui_api_index.html Base 基础 Documentation 文档 Parser 解析器 EasyLoader 加载器 Draggable 可拖拽 Droppable 可释放 Resizable 可调整尺寸 Pagination 分页 SearchBox 搜索框 ProgressBar 进度条 Layout 布局 Panel 面板 Tabs 标签页/选项卡 Accordion 手风琴 Layout 布局 Menu and Button 菜单和按钮 Menu 菜单 LinkButton 链接按钮 MenuButton 菜单按钮 SplitButton 拆分按钮 (这个一直不知道中文该如何表述才恰当,谁知道一定告诉我啊) Form 表单 Form 表单 ValidateBox 验证框 Combo
组合
ComboBox
组合
框 ComboTree
组合
树 ComboGrid
组合
表格 NumberBox 数字框 DateBox 日期框 DateTimeBox 日期时间框 Calendar 日历 Spinner 微调器 NumberSpinner 数值微调器 TimeSpinner 时间微调器 Window 窗口 Window 窗口 Dialog 对话框 Messager 消息框 DataGrid and Tree
数据
表格和树 DataGrid
数据
表格 PropertyGrid 属性表格 Tree 树 TreeGrid 树形表格
微信小程序 实例汇总 完整项目源代码
微信小程序 实例汇总 完整项目源代码
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章