迪卡尔积C#
来源:互联网 发布:手机淘宝5.8.0安卓版 编辑:程序博客网 时间:2024/04/28 20:51
/// <summary>
/// 迪卡尔积
///
/// (1)将每个维度的集合的元素视为List<string>,多个集合构成List<List<string>> dimvalue作为输入
///(2)将多维笛卡尔乘积的结果放到List<string> result之中作为输出
///(3)int layer, string curstring只是两个中间过程的参数携带变量
/// (4)程序采用递归调用,起始调用示例如下:
/// List<string> result = new List<string>();
/// Descartes.run(dimvalue, result, 0, "");
/// 即可获得多维笛卡尔乘积的结果。
/// </summary>
/// <param name="dimvalue"></param>
/// <param name="result"></param>
/// <param name="layer"></param>
/// <param name="curstring"></param>
///
///
///
public static void Descartes(List<List<string>> dimvalue, List<string> result, int layer, string curstring)
{
if (layer < dimvalue.Count - 1)
{
if (dimvalue[layer].Count == 0)
Descartes(dimvalue, result, layer + 1, curstring);
else
{
for (int i = 0; i < dimvalue[layer].Count; i++)
{
StringBuilder s1 = new StringBuilder();
s1.Append(curstring);
s1.Append("," + dimvalue[layer][i]);
Descartes(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 < dimvalue[layer].Count; i++)
{
result.Add((curstring + "," + dimvalue[layer][i]).Trim(','));
}
}
}
}
/// 迪卡尔积
///
/// (1)将每个维度的集合的元素视为List<string>,多个集合构成List<List<string>> dimvalue作为输入
///(2)将多维笛卡尔乘积的结果放到List<string> result之中作为输出
///(3)int layer, string curstring只是两个中间过程的参数携带变量
/// (4)程序采用递归调用,起始调用示例如下:
/// List<string> result = new List<string>();
/// Descartes.run(dimvalue, result, 0, "");
/// 即可获得多维笛卡尔乘积的结果。
/// </summary>
/// <param name="dimvalue"></param>
/// <param name="result"></param>
/// <param name="layer"></param>
/// <param name="curstring"></param>
///
///
///
public static void Descartes(List<List<string>> dimvalue, List<string> result, int layer, string curstring)
{
if (layer < dimvalue.Count - 1)
{
if (dimvalue[layer].Count == 0)
Descartes(dimvalue, result, layer + 1, curstring);
else
{
for (int i = 0; i < dimvalue[layer].Count; i++)
{
StringBuilder s1 = new StringBuilder();
s1.Append(curstring);
s1.Append("," + dimvalue[layer][i]);
Descartes(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 < dimvalue[layer].Count; i++)
{
result.Add((curstring + "," + dimvalue[layer][i]).Trim(','));
}
}
}
}
0 0
- 迪卡尔积C#
- 迪卡尔积
- 迪卡尔曲线
- 迪卡尔曲线
- SQL查询n+1问题 以及迪卡尔积问题
- hive 包含操作(left semi join)(left outer join = in)迪卡尔积
- 卡尔曼
- 卡尔斯鲁厄
- 扩展卡尔曼滤波+卡尔曼滤波
- [转帖]卡尔曼滤波器
- 卡尔曼滤波器
- 卡尔曼滤波器
- 卡尔曼滤波1
- 卡尔曼滤波2
- 天才卡尔·克洛耶
- 卡尔曼滤波器
- 卡尔曼滤波
- 卡尔曼滤波器
- svn 如何看懂冲突的details(有mf和tf的解释)
- 什么是真正的好程序员?
- HR,HR,我们去哪里呀?(爸爸去哪儿版)
- tomcat(2)简单jsp demo
- CSS3 Media Queries
- 迪卡尔积C#
- 二分查找算法-递归-非递归实现
- java并发集合类
- ORA-12505无法链接数据库
- 便宜的谷歌Android新EKEN M009平板电脑7寸无线摄像头重力感应
- picture控件绘图
- Python:cmd模块
- Mina框架断包、粘包问题解决方案
- Python Shell(command line模式和GUI模式)区别