组合数 递归程序 所有组合的情况 计数 c# 组合.doc

上传人:工**** 文档编号:562597230 上传时间:2024-03-08 格式:DOC 页数:3 大小:27KB
返回 下载 相关 举报
组合数 递归程序 所有组合的情况 计数 c# 组合.doc_第1页
第1页 / 共3页
组合数 递归程序 所有组合的情况 计数 c# 组合.doc_第2页
第2页 / 共3页
组合数 递归程序 所有组合的情况 计数 c# 组合.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《组合数 递归程序 所有组合的情况 计数 c# 组合.doc》由会员分享,可在线阅读,更多相关《组合数 递归程序 所有组合的情况 计数 c# 组合.doc(3页珍藏版)》请在金锄头文库上搜索。

1、using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;using System.Collections;/*名称:组合数的递归实现 作者:陈长安 时间:2010-8-2 说明:1 程序具有通用性,给的数据不要求大小关系和顺序 2 输入字符串“1,2,3”,输出“1”“2”“3”“12”“13”“23”“123” 3 编程思想:递归入口是(“1,2,3”,“0”) 每一层都要遍历到所有的递归,以不存在的0开始,是为了把所有情况都含在虚拟的0开头的情况,这样

2、一个递归调用就找到所有的串,返回时把0屏蔽掉即可 注意:输入的字符串要以英文的逗号隔开 */namespace 构造那个东东没分割的字符串 class Program static void Main(string args) Program a = new Program(); string tmpStr = 1,2,3,4,5,6,7; ArrayList result_list = b(tmpStr, 0); string result_str = ; for (int w = 0; w result_list.Count; w+) result_str =result_str+ res

3、ult_listw.ToString()+n; Console.Write(result_str); Console.Read(); /4取3 ”1,2,3,4“ 变成“1,2,3”“1,2,4”“1,3,4”“2,3,4” ArrayList comb(string leave, string now) string before1 = now; /now不为0时:返回时要加个“now,”并且在now这一层,底层返回的字符串们都要在开头补上“now,” if (now != 0) if (leave != ) /save_lists存返回的动态数组 动态数组里存的是字符串。 ArrayLis

4、t save_lists = new ArrayList(); string partition = leave.Split(new char , , StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i partition.Length; i+) string leave1 = ; for (int k = i + 1; k partition.Length; k+) if (k = partition.Length) leave1 = ; break; leave1 = leave1 + partitionk.ToString(

5、) + ,; /递归在这 ArrayList list = comb(leave1, partitioni); for (int q = 0; q list.Count; q+) save_lists.Add(before1 + , + listq.ToString(); save_lists.Add(before1 + ,); return save_lists; else ArrayList a = new ArrayList(); a.Add(before1 + ,); return a; /now是0 (“1,2,3,4”,“0”)这种,是该返回什么返回什么 else /save_li

6、sts存返回的动态数组 动态数组里存的是字符串。 ArrayList save_lists = new ArrayList(); string partition = leave.Split(new char , , StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i partition.Length; i+) string leave1 = ; for (int k = i + 1; k partition.Length; k+) if (k = partition.Length) leave1 = ; break; leave1 = leave1 + partitionk.ToString() + ,; /核心递归在这 ArrayList list = comb(leave1, partitioni); for (int q = 0; q list.Count; q+) save_lists.Add(listq.ToString(); return save_lists;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号