C#中使用笛卡尔积方法得出穷举所有组合

2021-05-15 20:28

阅读:500

标签:cart   卡尔   笛卡尔积   log   输出   参数   pen   else   gen   

借鉴微博:https://blog.csdn.net/zhifeiya/article/details/42919047

 

核心代码:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Linq;
public class Descartes
{
///


/// 笛卡尔积
///

/// 将每个维度的集合的元素视为List,多个集合构成List> dimvalue作为输入
/// 将多维笛卡尔乘积的结果放到List result之中作为输出
/// int layer 只是两个中间过程的参数携带变量
/// string curstring只是两个中间过程的参数携带变量,传递""就行
public static void run(List> dimvalue, List result, int layer=0, string curstring="")
{
if (layer {
if (dimvalue[layer].Count == 0)
run(dimvalue, result, layer + 1, curstring);
else
{
for (int i = 0; i {
StringBuilder s1 = new StringBuilder();
s1.Append(curstring);
s1.Append(dimvalue[layer][i]);
run(dimvalue, result, layer + 1, s1.ToString());
}
}
}
else if (layer == dimvalue.Count - 1)
{
if (dimvalue[layer].Count == 0) result.Add(curstring);
else
{
for (int i = 0; i {
result.Add(curstring + dimvalue[layer][i]);
}
}
}
}
}

这里自己做个记录,

C#中使用笛卡尔积方法得出穷举所有组合

标签:cart   卡尔   笛卡尔积   log   输出   参数   pen   else   gen   

原文地址:https://www.cnblogs.com/hangmei/p/14676460.html

上一篇:c# 时间区间求并集

下一篇:windows快捷键


评论


亲,登录后才可以留言!