将一个有序数组进行排列 数组排列 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 为什么不是ABC ABD ACD BCD var str = new[] {"A", "B", "C", "D"}; for (var i = 0; i < 4; i++) { for (var j = i; j < 4; j++) { for (var k = j; k < 4; k++) { Console.WriteLine(str[i] + str[j] + str[k]); } } } 一个值只能取一次。而且不能重复取,比如A,B,C 取值了后不能在取了。 不重复的话就是 var str = new[] {"A", "B", "C", "D"}; for (var i = 0; i < 4; i++) { for (var j = i + 1; j < 4; j++) { for (var k = j + 1; k < 4; k++) { Console.WriteLine(str[i] + str[j] + str[k]); } } } http://www.codeproject.com/Articles/26050/Permutations-Combinations-and-Variations-using-C-G 用Sort方法对数组进行快速排序示例//生成数组 private int[] G_int_value;//定义数组字段 private Random G_Random = new Random();//创建随机数对象 private void btn_Generate_Click(object sender, EventArgs e) { G_int_value = new int[G_Random.Next(10, 20)];//生成随机长度数组 for (int i = 0; i < G_int_value.Length; i++)//遍历数组 { G_int_value[i] = G_Random.Next(0, 100);//为数组赋随机数值 } txt_str.Clear();//清空控件内字符串 foreach (int i in G_int_value)//遍历字符串集合 { txt_str.Text +=i.ToString() + ", ";//向控件内添加字符串 } }//对数组进行排序 private void btn_sort_Click(object sender, EventArgs e) { if (G_int_value != null) { Array.Sort(G_int_value);//使用Sort方法对数组排序 txt_str2.Clear();//清空控件内字符串 foreach (int i in G_int_value)//遍历字符串集合 { txt_str2.Text += i.ToString() + ", ";//向控件内添加字符串 } } else { MessageBox.Show("首先应当生成数组,然后再进行排序。","提示!"); } } 参照别人写的排列组合类比如:string[] list = new string[] { "B", "A", "C", "D" };List<string[]> lst_Combination = Algorithms.PermutationAndCombination<string>.GetCombination(list, 3).Distinct().ToList();foreach (var i in lst_Combination){ Console.WriteLine(string.Join(",", i.OrderBy(x=>x).ToArray()));} 请高手赐教 日期比较的问题 VB中的AddressOf在C#中如何描述呢 如何让路径默认为单斜杠? 请问一个模式窗体和无模式窗体的问题 如何动态地得到当前Panel上的子panel 如何设定窗口句柄不被改变 哪位大神给一个C#Winfroms上传图片的代码 [高分招兵买马]有关网络版单号的原代码。 C#源代码大放送(本论坛中的一些问题,它都可解决) 请教一个c#编译问题 c# Socket 16进制数据获取和显示问题
{
for (var j = i; j < 4; j++)
{
for (var k = j; k < 4; k++)
{
Console.WriteLine(str[i] + str[j] + str[k]);
}
}
}
不重复的话就是 var str = new[] {"A", "B", "C", "D"}; for (var i = 0; i < 4; i++)
{
for (var j = i + 1; j < 4; j++)
{
for (var k = j + 1; k < 4; k++)
{
Console.WriteLine(str[i] + str[j] + str[k]);
}
}
}
//生成数组
private int[] G_int_value;//定义数组字段
private Random G_Random = new Random();//创建随机数对象
private void btn_Generate_Click(object sender, EventArgs e)
{
G_int_value = new int[G_Random.Next(10, 20)];//生成随机长度数组
for (int i = 0; i < G_int_value.Length; i++)//遍历数组
{
G_int_value[i] = G_Random.Next(0, 100);//为数组赋随机数值
}
txt_str.Clear();//清空控件内字符串
foreach (int i in G_int_value)//遍历字符串集合
{
txt_str.Text +=i.ToString() + ", ";//向控件内添加字符串
}
}
//对数组进行排序
private void btn_sort_Click(object sender, EventArgs e)
{
if (G_int_value != null)
{
Array.Sort(G_int_value);//使用Sort方法对数组排序
txt_str2.Clear();//清空控件内字符串
foreach (int i in G_int_value)//遍历字符串集合
{
txt_str2.Text += i.ToString() + ", ";//向控件内添加字符串
}
}
else
{
MessageBox.Show("首先应当生成数组,然后再进行排序。","提示!");
}
}
比如:string[] list = new string[] { "B", "A", "C", "D" };
List<string[]> lst_Combination = Algorithms.PermutationAndCombination<string>.GetCombination(list, 3).Distinct().ToList();
foreach (var i in lst_Combination)
{
Console.WriteLine(string.Join(",", i.OrderBy(x=>x).ToArray()));
}