声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1199|回复: 5

[编程技巧] 一个排列与组合问题

[复制链接]
发表于 2008-12-10 12:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
现在有3个数:A,B,C。打算实现的功能是:这三个数的任意组合的加减乘除,一共有多少种?
就是用这三个数字来构造另外一个数字,符号相反也认为是不同的

我的想法是:首先可以分成三类AB/C,AC/B,AB/C
对于每一类:以AB/C为例子
A+B
A-B
A*B
A/B
B-A
B/A
共有6个因子,这6个因子再和C运算

以A+B为例
C+(A+B)
C-(A+B)
C*(A+B)
C/(A+B)
(A+B)-C
(A+B)/C
也是6个因子

所以对于每一类我们有36个组合

对于三个类别有36*3个类别

这样要用3个循环来实现,很是麻烦。
1. 有没有更简单的方法?
2.我的算法有漏掉什么组合吗?
谢谢

[ 本帖最后由 re-us 于 2008-12-10 21:46 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-12-10 18:57 | 显示全部楼层
有重复
比如C+(A+B)和A+(B+C)和B+(A+C)是一样的
还有,为啥乘8不是乘3

[ 本帖最后由 ChaChing 于 2010-2-3 15:15 编辑 ]
 楼主| 发表于 2008-12-10 21:47 | 显示全部楼层

回复 沙发 wwbeyondww 的帖子

谢谢指导,确实有重复
另外,就是应该乘3,打错了

继续请教大家,有没有更好的算法。
还好,这是3个数字构造一个数字,如果是更多呢?

谢谢

[ 本帖最后由 ChaChing 于 2010-2-3 15:16 编辑 ]
发表于 2008-12-11 07:45 | 显示全部楼层
楼主方便说明要实现功能的应用是什麽? 为何有此需求!?
发表于 2008-12-11 10:03 | 显示全部楼层
估计是要编个算24的小程序,哈哈

我觉得楼主的思路应该也不复杂吧,
写个函数,f(a,b),输出a和b的六种计算结果,
3个也很简单了,f(f(a,b),c);f(f(a,c),b);f(f(b,c),a)就好了;
4个麻烦点,除了f(f(f(a,b),c),d);f(f(f(a,b),d),c)这中类型外,还要考虑f(f(a,b),f(c,d))这一类情况。不过全都列举下写个4张牌的24点倒是没问题。
5个以上列举不是好办法,我的话只能加入n多冗余重复的计算来考虑了

[ 本帖最后由 ChaChing 于 2010-2-3 15:18 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2008-12-13 06:37 | 显示全部楼层
比如用北京的温度,气压,和降雨,构造一个新的变量,所以想求出所有的组合类型

非常感谢! "不过全都列举下写个4张牌的24点倒是没问题" 不是很明白? 再次感谢

现在要考虑8个变量,通过加减乘除组合新的变量。请大家多给意见。谢谢

[ 本帖最后由 ChaChing 于 2010-2-3 15:31 编辑 ]

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-22 23:31 , Processed in 0.053405 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表