C# 数组元素排列组合

string[]str=newstring[]{"a","b","c"};想得到abcacbbacbcacabcba这6种排列组合的结果请问要怎么实现求代码。... string[] str = new string[] { "a", "b", "c" }; 想得到abc acb bac bca cab cba 这6种排列组合的结果 请问要怎么实现 求代码。 展开
 我来答
Jarhf
推荐于2016-07-09 · TA获得超过1862个赞
知道小有建树答主
回答量:1736
采纳率:25%
帮助的人:1033万
展开全部
想了好一会,自己写了一个类实现全排列的算法:
这么用 :
List<string> result= FullArrange.GetArrangeResult("abc");

public class FullArrange
{
public static List<string> GetArrangeResult(string str)
{
str = str.Trim();
if (string.IsNullOrEmpty(str))
{
return new List<string>();
}
else if (str.Length == 1)
{
return new List<string> { str };
}
else if (str.Length == 2)
{
char[] ca = str.ToArray();
return new List<string>() { ca[0].ToString() + ca[1].ToString(), ca[1].ToString() + ca[0].ToString() };
}
else
{
char[] array = str.ToCharArray();
List<string> temp = GetArrangeString(array[0].ToString(), array[1]);
for (int i = 2; i < array.Length; i++)
{
int count = temp.Count;
for (int j = 0; j < count; j++)
{
temp.AddRange(GetArrangeString(temp[j], array[i]));
temp.Remove(temp[j]);
j--;
count--;
}
}
return temp;
}
}

private static List<string> GetArrangeString(string parent, char child)
{
List<string> temp = new List<string>();
for (int i = 0; i <= parent.Length; i++)
{
temp.Add(parent.Insert(i, child.ToString()));
}
return temp;
}
}
MyAppleKnows
2012-06-02 · TA获得超过695个赞
知道小有建树答主
回答量:448
采纳率:0%
帮助的人:419万
展开全部
说明下,我下面写的这个函数不是排列的标准算法,完全是手工完成的。。只适用于三个元素的全排列。

/// <summary>
/// 三个元素的全排列,返回一个包括六个排列元素的数组
/// </summary>
/// <param name="strArray">含有三个要排列元素的数组</param>
/// <returns>含有六个排列好元素的数组</returns>
static string[] Permunation(string[] strArray)
{

string[] returnArray = new string[6];
returnArray[0] = strArray[0] + strArray[1] + strArray[2];
returnArray[1] = strArray[0] + strArray[2] + strArray[1];
returnArray[2] = strArray[1] + strArray[0] + strArray[2];
returnArray[3] = strArray[1] + strArray[2] + strArray[0];
returnArray[4] = strArray[2] + strArray[1] + strArray[0];
returnArray[5] = strArray[2] + strArray[0] + strArray[1];
return returnArray;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式