请教一个组合算法的实现问题

JugeSoft 2014-07-13 11:15:22
假设我有一组序列,假设为

int[] data = new int[] {1, 2, 3};


我希望得到一个由原始序列构成的所有的组合,但是得到的组合及排序希望是下面这个样子的:
引用
1,2,3
1,2
1,3
1
2,3
2
3


请问如何用C#代码实现,谢谢。
...全文
84 点赞 收藏 5
写回复
5 条回复
http://bbs.csdn.net/topics/370006969 google "caozhy 全组合"第二条结果就是。
回复 点赞
smthgdin_020 2014年07月14日
仅供参考: static void Main(string[] args) { string[] outStr=OutputString("ABC"); foreach(string str in outStr) { Console.WriteLine(str); } Console.ReadKey(); } static string[] OutputString(string str) { if (str == string.Empty) { return new string[] { string.Empty }; } string[] result = new string[1 << str.Length]; for (int i = 0; i < 1 << str.Length - 1; i++) { result[i] = OutputString(str.Remove(0, 1))[i]; } for (int i = 1 << str.Length - 1; i < 1 << str.Length; i++) { result[i] = string.Format("{0}{1}", str[0], OutputString(str.Remove(0, 1))[i - (1 << str.Length - 1)]); } return result; } 输出: C, B, BC, A, AC, AB, ABC
回复 点赞
於黾 2014年07月14日
递归一下就行了
回复 点赞
Crazygolf 2014年07月13日
参考http://www.cnblogs.com/shuaiwhu/archive/2012/04/27/2473788.html。这个可以多在百度上找找
回复 点赞
以专业开发人员为伍 2014年07月13日
如果你只是想要别人给你写代码,我没有。 给你提示一下算法分析:你可以从输出看到,要想打印“x、y、z”序列,它是: a. 需要遍历“y、z”序列的结果,并且将每一个输出前边都加上“x,”。 b. 输出 x。 c 然后从头开始,将打印目标由“x、y、z”序列替换为“y、z”序列。 然后你可以为这个方法加入必要的“结束条件”,就是一个可操作性的完整程序。
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.4w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告