`
iwebcode
  • 浏览: 1997612 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

从1..n中间选取任意组合,其和为m,列出所有组合的算法。

 
阅读更多

采用递推方法,并将每次的结果保存,并做为下一个的计算的基础。

/// <summary>
/// 从1..n中间选取任意组合,其和为m
/// </summary>
/// <param name="n"></param>
/// <param name="m"></param>
private void ListComboDigit(int n, int m)
{
//显示n*(n+1)小于2*m则无解
if (n * (n + 1) < 2 * m)
return;
int iItems = 0;
List<List<List<int>>> theRets = new List<List<List<int>>>();
for (int i = 1; i <= m; i++)
{
List<List<int>> theCurrRets = new List<List<int>>();
for (var k = 1; k <= i - 1; k++)
{
int tmp = i - k;
if (tmp > 0 && tmp <= n)
{
foreach (var item in theRets[k - 1])
{
if (tmp > item[item.Count - 1])
{
List<int> theTmp = new List<int>();
theTmp.AddRange(item);
theTmp.Add(tmp);
theCurrRets.Add(theTmp);
}
iItems++;
}
}

}
if (i <= n)
{
List<int> theSelf = new List<int>();
theSelf.Add(i);
theCurrRets.Add(theSelf);
}
iItems++;
theRets.Add(theCurrRets);
}
this.richTextBox1.Text = "";

foreach (var item in theRets[m - 1])
{
string tmpstr = "";
foreach (var it in item)
{
tmpstr += it.ToString() + " ";
}
this.richTextBox1.Text += tmpstr + "/r/n";
}

}

分享到:
评论

相关推荐

    分布式算法 作者:(美)Nancy A.Lynch 舒继武 李国东part1

    章后提供大量习题并列出了详细的参考文献。  本书可作为高等院校计算机系研究生的教材,尤其适合对计算机理论或体系结构感兴趣的学生学习,还适合分布式设计人员、研究人员及其相关技术人员参考。 出版者的话 ...

    数据结构(C++)有关练习题

    3、从终端读入字符集大小为n(即字符的个数),逐一输入n个字符和相应的n个权值(即字符出现的频度),建立哈夫曼树,进行编码并且输出。 注:可用C或C++编写。 4、用邻接矩阵或邻接图实现一个有向图的...

    计算机二级公共基础知识

    如果从根结点开始,按层次(每一层从左到右)用自然数1,2,……,n给结点进行编号,则对于编号为k(k=1,2,……,n)的结点有以下结论: ① 若k=1,则该结点为根结点,它没有父结点;若k&gt;1,则该结点的父结点编号...

    delphi 开发经验技巧宝典源码

    0086 用回溯法找出n个自然数中取r个数的所有组合 58 0087 0~N位数的任意组合 59 0088 在数组中快速查找近似值 60 0089 实现直接插入法排序 61 第4章 函数应用 63 4.1 字符串处理函数 64 0090 使用...

    图像处理案例三之(2)SIFT特征点检测.docx

    SURF算法先从9*9尺寸的盒子滤波器开始,对盒子滤波器的尺寸进行扩展,9*9尺寸的盒子滤波器是sigma为1.2时的高斯二阶微分函数经过离散和减裁后的滤波模板。在SURF中,我们保持图像不变,仅仅改变高斯滤波窗口的大小来...

    软件测试规范

    条件组合覆盖 .................................................................................................................................... 11 七.测试错误类型 ......................................

    基于MATLAB的GUI图像处理程序设计

     以下列出几点程序的功能,供参考: 1)图像的读取和保存。 2)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像。 3)设计图形用户界面,让用户能够用鼠标选取图像感...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数,其中,M表示精度,代表数字的总位数;N表示小数点右边数字的位数 日期类型 date 7字节 用于存储表中的日期和时间数据,取值范围是公元前4712年1月...

    php网络开发完全手册

    第8章 数组操作与数据结构算法 119 8.1 一维数组与多维数组 119 8.1.1 一维数组简介 119 8.1.2 多维数组简介 119 8.2 常用的数组操作 120 8.2.1 数组的创建与调用 120 8.2.2 数组的更新 121 8.2.3 数组元素的遍历 ...

    华为编程开发规范与案例

    与开发人员在测试组环境多次重复以上步骤,发现11群的计次表话单有时正常,有时其出中继群号就为一个随机值,发生异常的频率比较高。为什么其它群的话单正常,唯独11群不正常呢?11群是四个群中最小的群,其中继计...

    易语言程序免安装版下载

    “库文件名”以.lib或.obj为后缀的将被视为静态库,可使用绝对路径或相对路径(相对当前源代码所在目录),如依赖多个静态库请分别列出并以逗号分隔;“在库中的对应命令名”请务必准确填写静态库中公开导出的符号...

    会计理论考试题

    4.硬盘格式化分三个阶段,其先后顺序为低级格式化、分区、高级格式化。( Y ) 5.西文工作方式下不可输入汉字。( Y ) 6.微机的键盘是一种分离式的智能键盘,通过电缆与显示器连接。( N ) 7.写保护口用于保护存储在...

    delphi 开发经验技巧宝典源码06

    0086 用回溯法找出n个自然数中取r个数的所有组合 58 0087 0~N位数的任意组合 59 0088 在数组中快速查找近似值 60 0089 实现直接插入法排序 61 第4章 函数应用 63 4.1 字符串处理函数 64 0090 使用...

    服务器基础知识大全知识讲解.docx

    其主目的是用现有的小型廉价磁盘,把多个磁盘按一定的方法组成一个磁盘阵列,通过一些硬件技术和一系列的调度算法,以磁盘阵列方式组成一个超大容量,响应速度快,可靠性高的存储子系统,对用户来说,就像是在使用一...

    Python Cookbook

    5.10 选取序列中最小的第n个元素 200 5.11 三行代码的快速排序 203 5.12 检查序列的成员 206 5.13 寻找子序列 208 5.14 给字典类型增加排名功能 210 5.15 根据姓的首字母将人名排序和分组 214 第6章 面向对象...

    非制冷红外焦平面无效像元识别与实时补偿

    在硬件实现阶段, 对于M×N的UFPA器件, 在任意采样时刻, 利用移位寄存器保存当前采样点之前的M个响应值, 使其输出可实时更新为与采样点同列的上一个数据; 同时, 利用一般的寄存器实时保存与采样点同行的前一个数据, ...

    达梦数据库_SQL语言手册

    确保存储在该列的所有值都具有这一长度。 数据类型的最大长度由数据库页面大 小决定,字符类型最大长度和页面大小的对应关系请见下表支持按字节存放字符 串 表 数据库页面大 最大长度 类型 语法: 长度 功能...

    C#.net_经典编程例子400个

    第1章 窗体与界面设计 1 1.1 菜单应用实例 2 实例001 带历史信息的菜单 2 实例002 菜单动态合并 3 实例003 像开始菜单一样漂亮的菜单 4 实例004 任务栏托盘菜单 5 实例005 可以拉伸...

Global site tag (gtag.js) - Google Analytics