求M选N算法 本帖最后由 caozhy 于 2013-08-16 11:53:21 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 排列组合吧http://www.cnblogs.com/rogerwei/archive/2010/11/18/1880336.html /// <summary> /// 获取不重复随机数的字符串数组 /// </summary> /// <param name="num"></param> /// <param name="max"></param> /// <returns></returns> protected List<String> getRandomNum(int num,int max) { Random rd = new Random(); List<String> numArr = new List<String>(); while (numArr.Count < num) { int rdnum = rd.Next(1, max); if (!numArr.Contains(rdnum.ToString())) { numArr.Add(rdnum.ToString()); } } return numArr; }功能应该类似,稍微改下就好 using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { int n = 3; string[] are = { "1", "2", "3", "4", "5", "6" }; var result = are.Select(x => new string[] { x }); for (int i = 0; i < n - 1; i++) { result = result.SelectMany(x => are.Where(y => y.CompareTo(x.First()) < 0).Select(y => new string[] { y }.Concat(x).ToArray())); } foreach (var item in result) { Console.WriteLine(string.Join(", ", item)); } } }}1, 2, 31, 2, 41, 3, 42, 3, 41, 2, 51, 3, 52, 3, 51, 4, 52, 4, 53, 4, 51, 2, 61, 3, 62, 3, 61, 4, 62, 4, 63, 4, 61, 5, 62, 5, 63, 5, 64, 5, 6Press any key to continue . . . linq大神...不过这lambda用的太吓人了吧从来没想过 声明式编程的璀璨明珠linq ,可以写出可读性这么差的代码(当然,也是我linq水平一般)个人感觉,如果中间产生了太多种类的匿名类型,则不太适合使用链式编程. 懂C的请进 翻译一段代码 用C# c# 多线程问题 如何获取有前缀的文件名 asp.net区暂时没人解(赋链接) 200分+105分 专家们该起床了 本地文件索引搜索的问题 Grid如何实现如图所示功能? 内存释放问题 怎样实现:ComboBox的DropDownWidth C#中怎么把一张表中的某些行复制到另一张表? 提供界面设计及换肤的源代码和文章 C# 导入Excel 求迷津~ C#excel问题 报错求教
http://www.cnblogs.com/rogerwei/archive/2010/11/18/1880336.html
/// 获取不重复随机数的字符串数组
/// </summary>
/// <param name="num"></param>
/// <param name="max"></param>
/// <returns></returns>
protected List<String> getRandomNum(int num,int max)
{
Random rd = new Random(); List<String> numArr = new List<String>(); while (numArr.Count < num)
{
int rdnum = rd.Next(1, max);
if (!numArr.Contains(rdnum.ToString()))
{
numArr.Add(rdnum.ToString());
}
}
return numArr;
}
功能应该类似,稍微改下就好
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int n = 3;
string[] are = { "1", "2", "3", "4", "5", "6" };
var result = are.Select(x => new string[] { x });
for (int i = 0; i < n - 1; i++)
{
result = result.SelectMany(x => are.Where(y => y.CompareTo(x.First()) < 0).Select(y => new string[] { y }.Concat(x).ToArray()));
}
foreach (var item in result)
{
Console.WriteLine(string.Join(", ", item));
}
}
}
}1, 2, 3
1, 2, 4
1, 3, 4
2, 3, 4
1, 2, 5
1, 3, 5
2, 3, 5
1, 4, 5
2, 4, 5
3, 4, 5
1, 2, 6
1, 3, 6
2, 3, 6
1, 4, 6
2, 4, 6
3, 4, 6
1, 5, 6
2, 5, 6
3, 5, 6
4, 5, 6
Press any key to continue . . .
不过这lambda用的太吓人了吧
从来没想过 声明式编程的璀璨明珠linq ,可以写出可读性这么差的代码(当然,也是我linq水平一般)
个人感觉,如果中间产生了太多种类的匿名类型,则不太适合使用链式编程.