首页 > 编程语言 >C#遍历输出从n个数中选择m个数的可以重复取数的所有组合

C#遍历输出从n个数中选择m个数的可以重复取数的所有组合

时间:2024-03-18 22:33:43浏览次数:34  
标签:选择 组合 GenerateCombinations C# 个数 取数 重复

目录

1.可重复取数的C(n,m)组合数

2.编程实现C(5, 3)可重复取数的组合并遍历输出


1.可重复取数的C(n,m)组合数

        要计算从n个数中任取m个数的可以重复取数的组合数,可以使用数学中的组合公式。在这种情况下,我们可以将问题看作是从n个数中选择m个数,其中每个数可以重复选择。

        这种情况下,组合数的公式为:C(n, m) = n^m

        其中,n是可供选择的数的总数,m是要选择的数的数量,C(n, m)表示从n个数中选择m个数的组合数。

        例如,从5个不重复的数中选择3个数,可以重复选择的组合数为:C(5, 3) = 5^3 = 125。

        因此,从5个不重复的数中选择3个数,可以重复选择的组合数为125种。

2.编程实现C(5, 3)可重复取数的组合并遍历输出

        程序首先定义了两个变量n和m,分别表示不重复的数的数量和需要选择的数的数量。然后,程序通过调用GenerateCombinations方法生成所有可能的组合。GenerateCombinations方法是一个递归方法,它根据m的值生成所有可能的组合。最后,程序将所有可能的组合输出到控制台。

// 计算从n个数中选择m个数的可以重复取数的组合数

namespace _152_1
{
    class CombinationCount
    {
        static void Main(string[] args)
        {
            ArgumentNullException.ThrowIfNull(args);

            int n = 5; // 不重复的数的数量
            int m = 3; // 需要选择的数的数量

            var combinations = GenerateCombinations(n, m).ToList();

            Console.WriteLine("从n={0}个不重复的数中选择m={1}个数,可以重复取数的组合数为:{2}", n, m, combinations.Count);
            Console.WriteLine("所有可能的组合:");
            foreach (var combination in combinations)
            {
                Console.WriteLine(string.Join(", ", combination));
            }
        }

        static IEnumerable<IEnumerable<int>> GenerateCombinations(int n, int m)
        {
            if (m == 0)
            {
                yield return Enumerable.Empty<int>();
            }
            else
            {
                for (int i = 0; i < n; i++)
                {
                    foreach (var combination in GenerateCombinations(n, m - 1))
                    {
                        yield return combination.Concat([i]);
                    }
                }
            }
        }
    }
}
//运行结果“
/*
从n=5个不重复的数中选择m=3个数,可以重复取数的组合数为:125
所有可能的组合:
0, 0, 0
1, 0, 0
2, 0, 0
3, 0, 0
4, 0, 0
0, 1, 0
1, 1, 0
2, 1, 0
3, 1, 0
4, 1, 0
0, 2, 0
1, 2, 0
2, 2, 0
3, 2, 0
4, 2, 0
0, 3, 0
1, 3, 0
2, 3, 0
3, 3, 0
4, 3, 0
0, 4, 0
1, 4, 0
2, 4, 0
3, 4, 0
4, 4, 0
0, 0, 1
1, 0, 1
2, 0, 1
3, 0, 1
4, 0, 1
0, 1, 1
1, 1, 1
2, 1, 1
3, 1, 1
4, 1, 1
0, 2, 1
1, 2, 1
2, 2, 1
3, 2, 1
4, 2, 1
0, 3, 1
1, 3, 1
2, 3, 1
3, 3, 1
4, 3, 1
0, 4, 1
1, 4, 1
2, 4, 1
3, 4, 1
4, 4, 1
0, 0, 2
1, 0, 2
2, 0, 2
3, 0, 2
4, 0, 2
0, 1, 2
1, 1, 2
2, 1, 2
3, 1, 2
4, 1, 2
0, 2, 2
1, 2, 2
2, 2, 2
3, 2, 2
4, 2, 2
0, 3, 2
1, 3, 2
2, 3, 2
3, 3, 2
4, 3, 2
0, 4, 2
1, 4, 2
2, 4, 2
3, 4, 2
4, 4, 2
0, 0, 3
1, 0, 3
2, 0, 3
3, 0, 3
4, 0, 3
0, 1, 3
1, 1, 3
2, 1, 3
3, 1, 3
4, 1, 3
0, 2, 3
1, 2, 3
2, 2, 3
3, 2, 3
4, 2, 3
0, 3, 3
1, 3, 3
2, 3, 3
3, 3, 3
4, 3, 3
0, 4, 3
1, 4, 3
2, 4, 3
3, 4, 3
4, 4, 3
0, 0, 4
1, 0, 4
2, 0, 4
3, 0, 4
4, 0, 4
0, 1, 4
1, 1, 4
2, 1, 4
3, 1, 4
4, 1, 4
0, 2, 4
1, 2, 4
2, 2, 4
3, 2, 4
4, 2, 4
0, 3, 4
1, 3, 4
2, 3, 4
3, 3, 4
4, 3, 4
0, 4, 4
1, 4, 4
2, 4, 4
3, 4, 4
4, 4, 4

 */

 

标签:选择,组合,GenerateCombinations,C#,个数,取数,重复
From: https://blog.csdn.net/wenchm/article/details/136823743

相关文章

  • luceda ipkiss教程 63:器件端口延伸ExtendPorts
    案例分享:通过picazzo3库中的ExtendPorts函数实现器件的端口延伸如:所有代码如下:fromsi_fabimportallaspdkfromipkiss3importallasi3frompicazzo3.container.extend_portsimportExtendPorts#BuildingtheMMIPCellwithpropertiesthatdescribeits......
  • AcWing 1171. 距离 Tarjan算法离线求LCA
    题目输入样例1:22121001221输出样例1: 100100输入样例2:32121031151232输出样例2: 1025LCA算法:LCA(LeastCommonAncestors)最近公共祖先Tarjan求LCA是一种离线的算法,也就是说它一遍求出所有需要求的点的LCA,而不是需要求哪两个点再去求......
  • 【前端素材】推荐优质综合购物电子商城网站设计Cropium平台模板(附源码)
    一、需求分析在线电子数码商店网站是指专门销售电子产品和数码设备的网上商店。这类网站通常提供广泛的产品选择,涵盖手机、平板电脑、相机、电脑配件、智能家居设备等多种数码产品。以下是在线电子数码商店网站的一般功能:产品展示与购买: 网站上展示各种电子数码产品的详细......
  • Ubuntu系统Psi4 使用conda安装及编译安装
    目录前言一、Psi4是什么?二、安装步骤1.下载及安装2设置环境变量三、使用方法总结前言Psi4是一个量子化学软件包,用于计算分子和固体的电子结构。本文提供本地安装及在Python中使用的安装。一、Psi4是什么?主页:PSI4:Open-SourceQuantumChemistryPsi4是一......
  • Venom ctf crypto RRSA
    题目:`fromflagimportflagimportrandomfromCrypto.Util.numberimport*defgenprime():o=getPrime(300)whileTrue:r=random.randint(2211,2212)#返回参数1参数2中任意一个值ifisPrime(o*r+1):returno,o*r+1o1,p=genprime()#p=o1*r1+......
  • oracle数字格式化
    问题起源我们在数据库中存储了利率等信息是小于1的查询出结果后直接转换为字符串,这时候就有问题了比如0.5取出来后变成.5这时候放到前端显得不伦不类。解决to_char修改数字的格式,常用的集中情况如下SELECT1,TO_CHAR(.08,'fm999999999990.00'),'小数格式化'FROMdualUN......
  • Venom ctf 密码题 狂飙
    题目如下,懒得找题目qaqimportosfromflagimportflagfromCrypto.Util.numberimport*fromCrypto.CipherimportAESm=88007513702424243702066490849596817304827839547007641526433597788800212065249key=os.urandom(24)key=bytes_to_long(key)n=m%keyfl......
  • 读取设置密码保护的excel文件,有没有更好的办法?
    大家好,我是Python进阶者。一、前言前几天在Python最强王者交流群【wen】问了一个Python处理Excel加密文件读取问题。问题如下:请教:读取设置了密码保护的exlce文件,df=pd.read_excel(file,password='12345678') 报错:gotanunexpectedkeywordargument"password"  目前的解......
  • stack和queue
    stack的介绍1.stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。2.stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,......
  • HTML+CSS+JS实现一个图书管理的登录跳转,做的花里胡哨,当娱乐即可。
    目录1、大二上学期的一个小作业2、页面展示3、进入主页可以看到书籍,这个页面是参照某个博主写的,忘记是哪个了,好久了。4、点击右边的搜索框,会跳转到我写的另一个页面,这里面的都是固定的,不是灵活的,因为当时只学了web而已。5、获取源码地址1、大二上学期的一个小作业2、......