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

2024-03-19 08:28

本文主要是介绍C#遍历输出从n个数中选择m个数的可以重复取数的所有组合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

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*/

 

这篇关于C#遍历输出从n个数中选择m个数的可以重复取数的所有组合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/825381

相关文章

el-select下拉选择缓存的实现

《el-select下拉选择缓存的实现》本文主要介绍了在使用el-select实现下拉选择缓存时遇到的问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录项目场景:问题描述解决方案:项目场景:从左侧列表中选取字段填入右侧下拉多选框,用户可以对右侧

C#实现文件读写到SQLite数据库

《C#实现文件读写到SQLite数据库》这篇文章主要为大家详细介绍了使用C#将文件读写到SQLite数据库的几种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录1. 使用 BLOB 存储文件2. 存储文件路径3. 分块存储文件《文件读写到SQLite数据库China编程的方法》博客中,介绍了文

使用C#如何创建人名或其他物体随机分组

《使用C#如何创建人名或其他物体随机分组》文章描述了一个随机分配人员到多个团队的代码示例,包括将人员列表随机化并根据组数分配到不同组,最后按组号排序显示结果... 目录C#创建人名或其他物体随机分组此示例使用以下代码将人员分配到组代码首先将lstPeople ListBox总结C#创建人名或其他物体随机分组

在C#中合并和解析相对路径方式

《在C#中合并和解析相对路径方式》Path类提供了几个用于操作文件路径的静态方法,其中包括Combine方法和GetFullPath方法,Combine方法将两个路径合并在一起,但不会解析包含相对元素... 目录C#合并和解析相对路径System.IO.Path类幸运的是总结C#合并和解析相对路径对于 C

C#中字符串分割的多种方式

《C#中字符串分割的多种方式》在C#编程语言中,字符串处理是日常开发中不可或缺的一部分,字符串分割是处理文本数据时常用的操作,它允许我们将一个长字符串分解成多个子字符串,本文给大家介绍了C#中字符串分... 目录1. 使用 string.Split2. 使用正则表达式 (Regex.Split)3. 使用

C# Task Cancellation使用总结

《C#TaskCancellation使用总结》本文主要介绍了在使用CancellationTokenSource取消任务时的行为,以及如何使用Task的ContinueWith方法来处理任务的延... 目录C# Task Cancellation总结1、调用cancellationTokenSource.

C# dynamic类型使用详解

《C#dynamic类型使用详解》C#中的dynamic类型允许在运行时确定对象的类型和成员,跳过编译时类型检查,适用于处理未知类型的对象或与动态语言互操作,dynamic支持动态成员解析、添加和删... 目录简介dynamic 的定义dynamic 的使用动态类型赋值访问成员动态方法调用dynamic 的

C#如何优雅地取消进程的执行之Cancellation详解

《C#如何优雅地取消进程的执行之Cancellation详解》本文介绍了.NET框架中的取消协作模型,包括CancellationToken的使用、取消请求的发送和接收、以及如何处理取消事件... 目录概述与取消线程相关的类型代码举例操作取消vs对象取消监听并响应取消请求轮询监听通过回调注册进行监听使用Wa

通过C#和RTSPClient实现简易音视频解码功能

《通过C#和RTSPClient实现简易音视频解码功能》在多媒体应用中,实时传输协议(RTSP)用于流媒体服务,特别是音视频监控系统,通过C#和RTSPClient库,可以轻松实现简易的音视... 目录前言正文关键特性解决方案实现步骤示例代码总结最后前言在多媒体应用中,实时传输协议(RTSP)用于流媒体服

C#图表开发之Chart详解

《C#图表开发之Chart详解》C#中的Chart控件用于开发图表功能,具有Series和ChartArea两个重要属性,Series属性是SeriesCollection类型,包含多个Series对... 目录OverviChina编程ewSeries类总结OverviewC#中,开发图表功能的控件是Char