求助一个排列组合的算法问题(在线等,立结贴)

jackylincn 2012-09-25 05:19:46
我现在有11个数字,我要任选其中的8个数字做排列组合,两两不相同,现在我要把这8个数字的排列组合全部列举出来,如
0102030405060708,010203040506070809.....1110090807060504,总计有11*10*9*8*7*6*5*4/(1*2*3*4*5*6*7*8)=165种排列组合,求算法
...全文
134 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
devmiao 2012-09-25
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
class Program
{

static void Main(string[] args)
{
foreach (string item in BeginCombo().Select(x => string.Join("", x.Select(y => y.ToString().PadLeft(2, '0')))))
Console.WriteLine(item);
}

static IEnumerable<IEnumerable<int>> BeginCombo()
{
return Enumerable.Range(1, 11).SelectMany(x => Combo(new int[] { x }, Enumerable.Range(1, 11).Where(y => y > x)));
}

static IEnumerable<IEnumerable<int>> Combo(IEnumerable<int> current, IEnumerable<int> element)
{
if (current.Count() < 8)
return element.SelectMany(x => Combo(current.Concat(new int[] { x }), Enumerable.Range(1, 11).Where(y => y > x)));
else
return new List<IEnumerable<int>> { current };
}
}
}


0102030405060708
0102030405060709
0102030405060710
0102030405060711
0102030405060809
0102030405060810
0102030405060811
0102030405060910
0102030405060911
0102030405061011
0102030405070809
0102030405070810
0102030405070811
0102030405070910
0102030405070911
0102030405071011
0102030405080910
0102030405080911
0102030405081011
0102030405091011
0102030406070809
0102030406070810
0102030406070811
0102030406070910
0102030406070911
0102030406071011
0102030406080910
0102030406080911
0102030406081011
0102030406091011
0102030407080910
0102030407080911
0102030407081011
0102030407091011
0102030408091011
0102030506070809
0102030506070810
0102030506070811
0102030506070910
0102030506070911
0102030506071011
0102030506080910
0102030506080911
0102030506081011
0102030506091011
0102030507080910
0102030507080911
0102030507081011
0102030507091011
0102030508091011
0102030607080910
0102030607080911
0102030607081011
0102030607091011
0102030608091011
0102030708091011
0102040506070809
0102040506070810
0102040506070811
0102040506070910
0102040506070911
0102040506071011
0102040506080910
0102040506080911
0102040506081011
0102040506091011
0102040507080910
0102040507080911
0102040507081011
0102040507091011
0102040508091011
0102040607080910
0102040607080911
0102040607081011
0102040607091011
0102040608091011
0102040708091011
0102050607080910
0102050607080911
0102050607081011
0102050607091011
0102050608091011
0102050708091011
0102060708091011
0103040506070809
0103040506070810
0103040506070811
0103040506070910
0103040506070911
0103040506071011
0103040506080910
0103040506080911
0103040506081011
0103040506091011
0103040507080910
0103040507080911
0103040507081011
0103040507091011
0103040508091011
0103040607080910
0103040607080911
0103040607081011
0103040607091011
0103040608091011
0103040708091011
0103050607080910
0103050607080911
0103050607081011
0103050607091011
0103050608091011
0103050708091011
0103060708091011
0104050607080910
0104050607080911
0104050607081011
0104050607091011
0104050608091011
0104050708091011
0104060708091011
0105060708091011
0203040506070809
0203040506070810
0203040506070811
0203040506070910
0203040506070911
0203040506071011
0203040506080910
0203040506080911
0203040506081011
0203040506091011
0203040507080910
0203040507080911
0203040507081011
0203040507091011
0203040508091011
0203040607080910
0203040607080911
0203040607081011
0203040607091011
0203040608091011
0203040708091011
0203050607080910
0203050607080911
0203050607081011
0203050607091011
0203050608091011
0203050708091011
0203060708091011
0204050607080910
0204050607080911
0204050607081011
0204050607091011
0204050608091011
0204050708091011
0204060708091011
0205060708091011
0304050607080910
0304050607080911
0304050607081011
0304050607091011
0304050608091011
0304050708091011
0304060708091011
0305060708091011
0405060708091011
Press any key to continue . . .
jackylincn 2012-09-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
http://blog.csdn.net/happy09li/article/details/7715858
[/Quote]

不好意思,你的我试了,只有当参数为2的时候结果才正常
1、 FACTORY —追 MM 少不了请吃饭了, 麦当劳的鸡翅和肯德基的鸡翅都是 MM 爱吃的东西, 虽然口味有所不同, 但不管你带 MM 去麦当劳或肯德基, 只管向服务员说“来四个鸡翅”就行 了。麦当劳和肯德基就是生产鸡翅的 Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消 工厂模式 费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如 何创建及如何向客户端提供。 2、BUILDER — MM 最爱听的就是“我爱你”这句话了,见到不同地方的 MM,要能够用她们的 、 方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到 MM 我只要按对应的键, 它就能够用相应的语言说出“我爱你”这句话了, 国外的 MM 也可以轻松 搞掂,这就是我的“我爱你”builder。 (这一定比美军在 伊拉克用的翻译机好卖) 建造模式: 从而使一个建造过程生成具有不 建造模式 将产品的内部表象和产品的生成过程分割开来, 同的内部表象的产品对象。 建造模式使得产品内部表象可以独立的变化, 客户不必知道产品 内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。 3、FACTORY METHOD —请 MM 去麦当劳吃汉堡,不同的 MM 有不同的口味,要每个都记住 、 是一件烦人的事情,我一般采用 Factory Method 模式,带着 MM 到服务员那儿,说“要一个 汉堡”,具体要什么样的汉堡呢,让 MM 直接跟服务员说就行了。 工厂方法模式: 而是将具体创建的工作交给子类去做, 工厂方法模式 核心工厂类不再负责所有产品的创建, 成为一个抽象工厂角色, 仅负责给出具体工厂类必须实现的接口, 而不接触哪一个产品类应 当被实例化这种细节。 4、 、 PROTOTYPE —跟 MM 用 QQ 聊天, 一定要说些深情的话语了, 我搜集了好多肉麻的情话, 需要时只要 copy 出来放到 QQ 里面就行了, 这就是我的情话 prototype 了。 (100 块钱一份, 你要不要) 原始模型模式: 原始模型模式 通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原 型对象的方法创建出更多同类型的对象。 原始模型模式允许动态的增加或减少产品类, 产品 类不需要非得有任何事先确定的等级结构, 原始模型模式适用于任何的等级结构。 缺点是每 一个类都必须配备一个克隆方法。 5、 、 SINGLETON —俺有 6 个漂亮的老婆, 她们的老公都是我, 我就是我们家里的老公 Sigleton, 她们只要说道“老公”,都是指的同一个人,那就是我(刚才做了个梦啦,哪有这么好的事) 单例模式: 而且自行实例化并向整个系统提供这个实 单例模式 单例模式确保某一个类只有一个实例, 例单例模式。单例模式只应在有真正的“单一实例”的需求时才可使用。 结构型模式 6、ADAPTER —在朋友聚会上碰到了一个美女 Sarah,从香港来的,可我不会说粤语,她不 、 会说普通话,只好求助于我的朋友 kent 了,他作为我和 Sarah 之间的 Adapter,让我和 Sarah 可以相互交谈了(也不知道他会不会耍我) 适配器模式: 从而使原本因接口原因不 适配器模式 把一个类的接口变换成客户端所期待的另一种接口, 匹配而无法一起工作的两个类能够一起工作。 适配类可以根据参数返还一个合适的实例给客 户端。 7、BRIDGE —早上碰到 MM,要说早上好,晚上碰到 MM,要说晚上好;碰到 MM 穿了件新 、 衣服, 要说你的衣服好漂亮哦, 碰到 MM 新做的发型, 要说你的头发好漂亮哦。 不要问我“早 上碰到 MM 新做了个发型怎么说”这种问题,自己用 BRIDGE 组合一下不就行了 桥梁模式:将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关 桥梁模式 联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是 继承关系,从而使两者可以独立的变化。 8、COMPOSITE —Mary 今天过生日。“我过生日,你要送我一件礼物。”“嗯,好吧,去商店, 、 你自己挑。”“这件 T 恤挺漂亮,买,这条裙子好看,买,这个包也不错, 买。”“喂,买了 三件了呀,我只答应送一件礼物的哦。”“什么呀,T 恤加裙子加包包,正好配成一套呀,小 姐,麻烦你包起来。”“……”,MM 都会用 Composite 模式了,你会了没有? 合成模式:合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式就 合成模式 是一个处理对象的树结构的模式。 合成模式把部分与整体的

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧