c# 数组穷举?
现在我有一个string数组:{"a","b","c","d","e"}我想要穷举所有组合,比如:ab,c,d,eab,cd,eab,ce,dab,de,ca,b,c,d...
现在我有一个string数组:
{"a","b","c","d","e"}
我想要穷举所有组合,比如:
ab,c,d,e
ab,cd,e
ab,ce,d
ab,de,c
a,b,c,d,e等等
依次每个维度的第一个元素数量,一维=5(包含上面全部),二维=4(ab,c,d,e),三维=2(ab)
不能出现重复,比如:
ab,cd,e
dc,ba,e
实际中数组长度不固定,有什么解决办法吗? 展开
{"a","b","c","d","e"}
我想要穷举所有组合,比如:
ab,c,d,e
ab,cd,e
ab,ce,d
ab,de,c
a,b,c,d,e等等
依次每个维度的第一个元素数量,一维=5(包含上面全部),二维=4(ab,c,d,e),三维=2(ab)
不能出现重复,比如:
ab,cd,e
dc,ba,e
实际中数组长度不固定,有什么解决办法吗? 展开
展开全部
//算法
static List<string> GetStr(string qz,List<string> stuu)
{
List<string> lsResult = new List<string>();
StringBuilder bresult = new StringBuilder();
for (int i = 0; i < stuu.Count; i++)
{
bresult = new StringBuilder();
bresult.Append(qz);
for (int r = 0; r <= i; r++)
{
bresult.Append(stuu[r]); //获得前缀
}
if(i<stuu.Count-1)
bresult.Append(",");
lsResult.AddRange(GetStr(bresult.ToString(), stuu.Skip(i + 1).ToList()));
bresult.Append(string.Join(",", stuu.Skip(i + 1).ToArray()));
lsResult.Add(bresult.ToString());
}
return lsResult;
}
//方法外调用
var stuu = new List<string>{ "a", "b", "c", "d", "e","F" };
var result = GetStr("", stuu).GroupBy(t=>t).Select(t=>t.Key).ToList();
static List<string> GetStr(string qz,List<string> stuu)
{
List<string> lsResult = new List<string>();
StringBuilder bresult = new StringBuilder();
for (int i = 0; i < stuu.Count; i++)
{
bresult = new StringBuilder();
bresult.Append(qz);
for (int r = 0; r <= i; r++)
{
bresult.Append(stuu[r]); //获得前缀
}
if(i<stuu.Count-1)
bresult.Append(",");
lsResult.AddRange(GetStr(bresult.ToString(), stuu.Skip(i + 1).ToList()));
bresult.Append(string.Join(",", stuu.Skip(i + 1).ToArray()));
lsResult.Add(bresult.ToString());
}
return lsResult;
}
//方法外调用
var stuu = new List<string>{ "a", "b", "c", "d", "e","F" };
var result = GetStr("", stuu).GroupBy(t=>t).Select(t=>t.Key).ToList();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
等 依次每个维度的第一个元素数量,一维=5(包
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
组合和排列的代码很容易找到
但是你这个ab这种两个元素连起来的是什么鬼,你没说清楚需求
但是你这个ab这种两个元素连起来的是什么鬼,你没说清楚需求
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询