`
shaojwa
  • 浏览: 4547 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

一段用来求组合数的递归代码

阅读更多
很久以前用来枚举组合数的,当时应该是C(4,11)。
class Program
    {
        static void Main(string[] args)
        {
            int sum = 0;
            int[] vs  = new int[4];
            int[] vars = new int[11]{1,2,3,4,5,6,7,8,9,10,11};
            G(0, 0, 4, ref vars, ref vs, ref sum);
            Console.WriteLine(sum);
        }
        static void G(int startIndex, int count, int n, ref int[] vars, ref  int[] vs, ref int sum)
        {
            if (count == n)
            {
                sum++;
                Console.WriteLine("{0}-{1}-{2}-{3}", vs[0], vs[1], vs[2], vs[3]);
            }
            else
            {
                if ((startIndex < vars.Length) && ((vars.Length - startIndex) >= (n - count)))
                {
                    vs[count] = vars[startIndex];
                    count++;
                    G(startIndex + 1, count, n, ref vars, ref vs, ref sum);
                    count--;
                    G(startIndex + 1, count, n, ref vars, ref vs, ref sum);
                }
            } 
        }
    }
分享到:
评论

相关推荐

    PLSQLDeveloper下载

    在本文第一段代码中有一句话如下: cursor c_emp is select * from employee where emp_id=3; 其含义是定义一个游标c_emp,代表employee表中所有emp_id字段为3的结果集。当需要操作该结果集时,必须完成三步:打开...

    VB课程设计俄罗斯方块

    游戏的背景音乐是由一段代码调用系统播放器Windows Player播放背景音乐,由于本次设计主要是针对游戏如何设计的,所以在这里就不对播放背景音乐的功能做介绍了。 2.1.2俄罗斯方块的造型 相信朋友们都玩过俄罗斯方块...

    PL/SQL Developer8.04官网程序_keygen_汉化

    在本文第一段代码中有一句话如下: cursor c_emp is select * from employee where emp_id=3; 其含义是定义一个游标c_emp,代表employee表中所有emp_id字段为3的结果集。  当需要操作该结果集时,必须完成三步:...

    Java并发编程(学习笔记).xmind

    为了避免这种情况发生,需要让它们分别等待一段随机的时间 性能与可伸缩性 概念 运行速度(服务时间、延时) 处理能力(吞吐量、计算容量) 可伸缩性:当增加计算资源时,程序的处理能力变强 ...

    超级有影响力霸气的Java面试题大全文档

     栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。 堆是栈的一个组成元素 22、forward 和redirect的区别  forward是服务器请求资源,服务器直接访问目标地址的URL,把...

    入门学习Linux常用必会60个命令实例详解doc/txt

    所以这个选项当然没有时间参数,但是可以输入一个用来解释的讯息,而这信息将会送到每位使用者。 -F:在重启计算机时强迫fsck。 -time:设定关机前的时间。 -m: 将系统改为单用户模式。 -i:关机时显示系统...

    java 面试题 总结

    栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。 堆是栈的一个组成元素 19、forward 和redirect的区别 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL...

    计算机二级公共基础知识

    完全二叉树是指这样的二叉树:除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。 对于完全二叉树来说,叶子结点只可能在层次最大的两层上出现:对于任何一个结点,若其右分支下的...

    2009 达内Unix学习笔记

    ls -lt 是“-l”和“-t”的组合,按时间顺序显示列表。 ls -F 显示文件类型,目录“/ ”结尾;可执行文件“*”结尾;文本文件(none),没有结尾。 ls -R 递归显示目录结构。即该目录下的文件和各个副目录下的文件...

    易语言程序免安装版下载

    修改XP风格支持库,解决GDI资源泄露,以及在使用通用组件库六时组合框标题出现重影的BUG。 5. 修改扩展界面支持库一,解决树形框项目无法通过鼠标点击进入编辑状态的BUG。 6. 修改高级表格支持库,解决插入行/...

    freemarker总结

    JAVA模版引擎Freemarker常用标签(一) 1. if指令 这是一个典型的分支控制指令,该指令的作用完全类似于Java语言中的if,if指令的语法格式如下: &lt;#if condition&gt;... &lt;#elseif condition&gt;... &lt;#elseif condition&gt;......

Global site tag (gtag.js) - Google Analytics