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

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#代码实现,谢谢。
...全文
124 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2014-07-14
  • 打赏
  • 举报
回复
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
  • 打赏
  • 举报
回复
递归一下就行了
  • 打赏
  • 举报
回复
参考http://www.cnblogs.com/shuaiwhu/archive/2012/04/27/2473788.html。这个可以多在百度上找找
  • 打赏
  • 举报
回复
如果你只是想要别人给你写代码,我没有。 给你提示一下算法分析:你可以从输出看到,要想打印“x、y、z”序列,它是: a. 需要遍历“y、z”序列的结果,并且将每一个输出前边都加上“x,”。 b. 输出 x。 c 然后从头开始,将打印目标由“x、y、z”序列替换为“y、z”序列。 然后你可以为这个方法加入必要的“结束条件”,就是一个可操作性的完整程序。

111,098

社区成员

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

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

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