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

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#代码实现,谢谢。
...全文
122 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”序列。 然后你可以为这个方法加入必要的“结束条件”,就是一个可操作性的完整程序。
内容概要:本文档为程序设计基础上机测试题集1,涵盖多个编程练习题目,包括但不限于:发奖金(优化纸币组合)、求闰年数(计算指定年份内的闰年总数)、猴子吃桃(使用倒推法解决递减问题)、小游戏(判断数字之和是否为特定数值的倍数)、考拉兹猜想(验证数学猜想并打印序列)、凯撒密码(实现简单的字符加密算法)、百钱买百鸡(解决古代数学问题)、素数判定(判断输入是否为素数)、计算平均成绩统计不及格人数(处理学生成绩数据)以及打印数字图案(根据输入生成特定格式的数字矩阵)。每个题目都提供了具体的输入输出示例和C/C++代码实现。 适合人群:计算机专业学生或具有一定编程基础的学习者,尤其是正在学习C/C++语言和基础算法的人群。 使用场景及目标:①作为课堂作业或课后练习,巩固所学知识;②用于编程入门考试或竞赛准备;③帮助初学者理解常见算法思想和编程技巧,提高解决问题的能力。 阅读建议:建议读者先尝试独立完成每个题目,之后再参考提供的代码实现,对比自己的思路与标准答案之间的差异,注意代码规范性和效率优化。对于不太理解的地方,可以通过查阅相关资料或向老师请教来加深理解。

111,098

社区成员

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

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

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