没有合适的资源?快使用搜索试试~ 我知道了~
.net C# 实现任意List的笛卡尔乘积算法代码
0 下载量 177 浏览量
2021-01-20
06:28:54
上传
评论
收藏 45KB PDF 举报
温馨提示
试读
3页
可以扩展到多个集合的情况。类似的例子有,如果A表示某学校学生的集合,B表示该学校所有课程的集合,则A与B的笛卡尔积表示所有可能的选课情况 代码如下:using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq; namespace 算法{ public static class 算法 { /// <summary> /// 笛卡尔乘积 /// </summary> public static List<List
资源推荐
资源详情
资源评论
.net C# 实现任意实现任意List的笛卡尔乘积算法代码的笛卡尔乘积算法代码
可以扩展到多个集合的情况。类似的例子有,如果A表示某学校学生的集合,B表示该学校所有课程的集合,则A与B的笛卡尔
积表示所有可能的选课情况
代码如下:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
namespace 算法
{
public static class 算法
{
/// <summary>
/// 笛卡尔乘积
/// </summary>
public static List<List<T>> CartesianProduct<T>(this List<List<T>> lstSplit)
{
int count = 1;
lstSplit.ForEach(item => count *= item.Count);
//count = lstSplit.Aggregate(1, (result, next) => result * next.Count);
var lstResult = new List<List<T>>();
for (int i = 0; i < count; ++i)
{
var lstTemp = new List<T>();
int j = 1;
lstSplit.ForEach(item =>
{
j *= item.Count;
lstTemp.Add(item[(i / (count / j)) % item.Count]);
});
lstResult.Add(lstTemp);
}
return lstResult;
}
}
class Program
{
public static void Main()
{
StringDemo();
根据Sector生成Routing的Demo();
根据Sector生成Routing的Demo2();
}
/// <summary>
/// 简单字符串 笛卡尔乘积
/// </summary>
private static void StringDemo()
{
var lstSource = new List<List<string>>
{
new List<string>() { “A”,”B”,”C”},
new List<string>() { “D”,”E”,”F”},
资源评论
weixin_38608055
- 粉丝: 7
- 资源: 966
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功