| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1829 人关注过本帖
标题:如何将几个数字进行搭配相加,得出全排列组合。
只看楼主 加入收藏
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
结帖率:33.33%
收藏
已结贴  问题点数:100 回复次数:3 
如何将几个数字进行搭配相加,得出全排列组合。
比如我这里有4个数字:2、3、4、6

我需要用这4个数字搭配相加得出结果为全排列若干组合,请问如何写这样的代码?

2+3=5
2+4=6
2+6=12
2+3+4=9
2+3+4+6=15
2+3+6=11
2+4+6=12

3+4=7
3+6=9
3+4+6=13

4+6=10

(数据可能会达到几千个,注意效率!)

[ 本帖最后由 jockey 于 2012-7-4 17:20 编辑 ]
搜索更多相关主题的帖子: 数字 搭配 如何 
2012-07-04 16:26
zxg6652330
Rank: 2
等 级:论坛游民
威 望:1
帖 子:17
专家分:79
注 册:2012-6-12
收藏
得分:35 
等谁给你答案吧 。。 好难。。
2012-07-05 09:37
pemwoo
Rank: 2
等 级:论坛游民
帖 子:4
专家分:43
注 册:2012-3-15
收藏
得分:35 
1,做一个输入4个数的界面,类似于本论坛登录的界面
2,弄一段代码:a+b,a+c,.....穷尽可能,列表显示相加结果
2012-07-05 16:51
wumingchenxi
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:96
专家分:457
注 册:2012-6-6
收藏
得分:0 
遍历,全排列。
private void Form2_Load(object sender, EventArgs e)
        {
            int[] abase1=new int[4]{5,6,7,8};
            for (int count0 = 4; count0 >= 1; count0--) //取几个数字,比如3个数字相加
            {               
                GetBlockNum(abase1, count0);
            }               
        }
        private void GetBlockNum(int[] abase1, int level) {
            List<string> basenumAll = new List<string>();
            for (int count0 = 4; count0 >= 1; count0--) //第 某 个 情况,比如3个数字相加时的情况
            {
                List<string> basenum = new List<string>();
                GetNextNum(abase1, count0, 0, basenum);

                for (int j = 0; j < basenum.Count; j++)
                {
                    basenumAll.Add(basenum[j]);
                }
            }
            Console.Write(basenumAll.Count);
        }

        private void GetNextNum(int[] abase1, int level, int startPos, List<string> basenum0)
        {
            StringBuilder sb0 = new StringBuilder(100);
            for (int i = startPos; i < 4; i++)
            {
                if (4 - i >= level)
                {
                    sb0 = new StringBuilder(100);
                    sb0.Append(abase1[i]);
                    sb0.Append(",");
                    if (level > 1)
                    {
                        List<string> basenum = new List<string>();
                        GetNextNum(abase1, level - 1, i + 1, basenum);
                        for (int j = 0; j < basenum.Count; j++)
                        {
                            basenum0.Add(sb0 + basenum[j]);
                        }
                    }
                    else
                    {
                        basenum0.Add(sb0.ToString());
                    }
                }
            }
        }
结果是basenumAll中有所有的排列值
5;
6;
7;
8;
5,6;
5,7;
。。。。。
5,6,7,8;
可以稍微修改后,就是你要的列表了。
2012-07-10 10:54
快速回复:如何将几个数字进行搭配相加,得出全排列组合。
数据加载中...
 
   



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

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