穷举一个数组的全部可能的组合
穷举一个数组的所有可能的组合
求大神解决问题
有一个字符串string str="a,c,d,b"
我要列出所有的组合
一位的有:a,b,c,d
2位的有:ab,ac,ad,bc,bd,cd
3位的有:abc,abd,acd,bcd
四位的有:abcd
我这个字符串str里边的字符数量不是固定的,有可能是“a,b,c”也有可能是“a,b,c,d,e”
求能适用于所有情况的算法
自己写了一个,如下,只能适用于str里边只有5组字符的。看有没启发
求大神解决问题
有一个字符串string str="a,c,d,b"
我要列出所有的组合
一位的有:a,b,c,d
2位的有:ab,ac,ad,bc,bd,cd
3位的有:abc,abd,acd,bcd
四位的有:abcd
我这个字符串str里边的字符数量不是固定的,有可能是“a,b,c”也有可能是“a,b,c,d,e”
求能适用于所有情况的算法
自己写了一个,如下,只能适用于str里边只有5组字符的。看有没启发
List<string> strlist = new List<string>();
List<string> strs = "a,c,b,e,d".Split(',').OrderBy(t=>t).ToList();
string temp = "";
//5位
for (int i = 0; i<strs.Count; i++)
{
temp += strs[i] + ",";
}
strlist.Add(temp);
//4位数
for (int i = 0; i < strs.Count - 3; i++)
{
for (int j = i + 1; j < strs.Count - 2; j++)
{
for (int k = j + 1; k < strs.Count - 1; k++)
{
for (int n = k + 1; n < strs.Count; n++)
{
temp = strs[i] + "," + strs[j] + "," + strs[k] + "," + strs[n];
strlist.Add(temp);
}
}
}
}
//3位数
for (int j = 0; j < strs.Count - 2; j++)
{
for (int k = j + 1; k < strs.Count - 1; k++)
{
for (int n = k + 1; n < strs.Count; n++)
{
temp = strs[j] + "," + strs[k] + "," + strs[n];
strlist.Add(temp);
}
}
}
//2位
for (int k = 0; k < strs.Count - 1; k++)
{