| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3155 人关注过本帖
标题:求和的问题,请高手指教
只看楼主 加入收藏
杨帆远航
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-5-23
结帖率:0
收藏
已结贴  问题点数:20 回复次数:14 
求和的问题,请高手指教
表1

a    23
b    5
c    17
d    12
e    4
f    21
g    10

将上述7个数字分组求和,每组数字个数不限,和小于或等于30

谢谢




[此贴子已经被作者于2017-6-28 20:19编辑过]

搜索更多相关主题的帖子: 求和 数字 分组 小于 等于 
2017-06-28 20:17
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:4 
这是老师布置作业来了。
2017-06-29 13:46
杨帆远航
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-5-23
收藏
得分:0 
求高手指教
2017-06-30 09:04
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
1、这种组合不止一种,要看是只想要其中一种,还是其中几种,还是所有的都要。

2、每组数字个数不限,也就是单个数字独立成组也可以的,是不是?还是必须至少每组2个数字?这些都是题目中没交代清楚的地方。
2017-06-30 12:17
laojin2017
Rank: 1
等 级:新手上路
帖 子:1
专家分:4
注 册:2017-6-27
收藏
得分:4 
回复 4楼 taifu945
清楚的表达是获取理解的前提
2017-06-30 12:59
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:4 
从n个数中取出m个数的和等于k的组合
好象以前有贴,找找。
2017-06-30 14:40
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:4 
他这个很多
1、C(2,7)=(7*6)/(2*1)
2、C(3,7)=(7*6*5)/(3*2*1)
3、C(4,7)=(7*6*5*4)/(4*3*2*1)
估计到4个就超了,然后再判断和

2017-06-30 16:20
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

**
** 从m个数中取出n个数的和等于k的组合
**
CLEAR
CREATE CURSOR dd (cc C(254))
m = 7
k = 30
DIMENSION aa[m]
aa[1] = 23
aa[2] = 5
aa[3] = 17
aa[4] = 12
aa[5] = 4
aa[6] = 21
aa[7] = 10
ASORT(aa)
_f(@aa, k)
GO TOP
BROWSE
RETURN

FUNCTION _f(aa, k)
    LOCAL i
    FOR i = 1 TO ALEN(aa)
        IF aa[i] > k
            EXIT
        ENDIF
    ENDFOR
    DIMENSION aa[i-1]
    FOR i = 1 TO ALEN(aa)
        LOCAL bb[i]
        _ff(@aa, @bb, i, 1, 1, k)
    ENDFOR
ENDFUNC

FUNCTION _ff(aa, bb, n, ai, bi, k)
    LOCAL i, dd
    IF (n == 0)
        dd = bb[1]
        ss = TRANSFORM(bb[1])
        FOR i = 2 TO bi-1
            dd = dd + bb[i]
            ss = ss + "," + TRANSFORM(bb[i])
        ENDFOR
        IF dd == k
            INSERT INTO dd VALUES (ss)
        ENDIF
        RETURN
    ENDIF
    FOR i = ai TO ALEN(aa) - (n-1)
        bb[bi] = aa[i]
        _ff(@aa, @bb, n-1, i+1, bi+1, k)
    ENDFOR
ENDFUNC

[此贴子已经被作者于2017-6-30 20:36编辑过]

2017-06-30 20:19
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
收藏
得分:4 
回贴留着学习
2017-07-01 02:26
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
收藏
得分:0 
吹版,如果把这几个数字按最相近的和进行组合,有办法吗?对应现实问题是尾数考场的最佳混合问题。假设楼主所列数字为尾数考场的数字,那么混合考场的搭配为4个混合考场,人数分别是23,22(17+5),22(12+10),21。
2017-07-02 09:12
快速回复:求和的问题,请高手指教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026771 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved