c语言凑数的不同种方法,凑数强化版【庆贺2021年5月9日母亲节】
希望使用者好好看一下代码变量的简单注释,这样才能搞清楚程序参数的各种具体应用方法。
' 《凑数、凑金额的实用多功能强化版》 by kagawa 2014-01-01
' 2017-7-7更新 增加回溯 以便快速计算得到部分结果
' 2021-4-21 数值由Long整数改为CDec十进制数计算模式
' 2021-5-8 增加关联值汇总计算、重复值可选择字典去重复 或不去重复保留所有组合(关联值不同时)
' 经Excel Home 香川群子 的深入研究, 采用排序以后的差值递归、末位搜索、
' 当前位超过剩余值剪枝、当前位剩余和不足剪枝、递归计算深度参数控制等技
' 最后产生了目前最好的Excel VBA 高速高效的组合求和递归剪枝算法。
' 可处理小数、负数、重复数等各种情况
' 通过指定小数位数、指定目标和值范围、组合个数范围、指定求解个数、递归计算深度等参数使用
' 可以得到很多有趣的效果、可以满足几乎所有之前要求凑数、凑金额的求助帖子
' 我愿意公开此代码以便大家使用和学习
'========================================================================================
Dim sj(), jg(), dic, d&, d2&, h, h0#, h1, h2, h3#, k&, l&, l2&, m&, n&, n2&, t2&, cnt&, cnt0&, cnt1&, cnt2&, tms#
'递归用公用变量定义:
' sj(): 存放递归用原始数据的数组,已经过升序预处理含[原始数值]、[小数位转换为十进制数值]、[剪枝用累计和]
' jg(): 存放递归计算结果的数组,含组合个数、组合总和、组合明细、递归计算深度
' dic: 原始数据有重复时用来排除重复的字典dic
' d: d=[f3] 指定小数位数d
' d2: [f12]=d2 元素重复个数(有重复元素时使用字典排除重复组合)
' 起始设置=-1时,不排除重复【关联汇总对象不同时】
' h: h=[f1] 目标和值 转为Dec十进制数
' h0#: 目标和值下限 双精度原始值
' h1: [f11]=h1 有负数时负数累计总和h1
' h2: h2=[f2] 目标和值上限。并计算转换为和值的向上范围 转为Dec十进制数
' h3#: 目标和值上限 双精度原始值
' h和h2 有3种组合类型:
' [h,0]→[h,h]输出完全匹配=h的组合;
' [h
' [h2
' k: [f7]=k 组合结果存入jg数组时的序号、计算得到的组合结果总数
' l: l=[f6] jg()数组的最大下标=限制计算以及输出到工作表的最大行数l
' 留空时不限制计算、但输出默认为<65530行
' l=-1时输出组合结果到本文件所在文件夹下的txt文本文件
' l2: 统计组合结果文本长度最大值超过911时不能进行数组输出,只能逐行输出
' m: 原始数据中待组合元素个数m
' n: n=[f4] 指定组合元素个数下限n
' n2: n2=[f5] 指定组合元素个数上限n2
' n和n2 共有4种组合类型:
' [0,0]→[0,m]输出全部组合;[n,0]→[n,n]匹配=n的组合;
' [0,n2]→输出0-n2范围组合;[n,n2]→输出n-n2组合。
' t2: t2=[f14] 允许回溯时的t值限制 有扩大计算深度的效果
' cnt: [f8]=cnt 递归计算次数
' cnt0: cnt0=[f15] 递归计算深度(默认留空时=2^16即65536次递归)
' 初次计算无解则可改输入=-1 就会遍历计算全部组合(计算量太大可能会陷入假死循环)
' cnt1: 递归计算深度 有解时归零、或未达到允许回溯的t值时归零
' cnt2: [f13]=cnt2 递归计算深度的最大值记录
' A列序号
' B列凑数对象:个数或金额或任意含小数的数值
' C列关联汇总对象:B列凑数值组合相加求和在目标和值范围内时、同时输出其C列也能相加汇总的关联值的总和
' 计算完成后 选N列点按钮黄色高亮序号、选O列点按钮黄色高亮B列组合 选第1行后点按钮则消除黄色底色
c语言凑数的不同种方法,凑数强化版【庆贺2021年5月9日母亲节】相关推荐
- C语言程序设计复习题(2021年11月3日)
C语言程序设计复习题 (2021年11月3日) 解析有空再写 一.选择题: 1.以下各组数据中,不正确的数值或字符常量是( CAA ) [1]A)011 B)3.987E-2 C)018 D)0xa ...
- 税务总局发文进一步简便优化部分纳税人个人所得税预扣预缴方法!2021年1月1日起施行
国家税务总局 关于进一步简便优化部分纳税人个人所得税预扣预缴方法的公告 国家税务总局公告2020年第19号 为进一步支持稳就业.保就业.促消费,助力构建新发展格局,按照<个税法>及其实施条 ...
- ACMNO.42 C语言-第几天 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。利用结构体的在最下面
题目描述 定义一个结构体变量(包括年.月.日).计算该日在本年中是第几天,注意闰年问题. 输入 年月日 输出 当年第几天 样例输入 2000 12 31 样例输出 366 来源/分类 C语言 题目截图 ...
- 《软件方法(上)业务建模和需求》第2版 勘误(2021年10月21日更新)
说明 勘误中的一部分,特别是很荒谬的错误,其实是编辑自作主张修改而且未和作者沟通造成的.有心的读者如果在网上能找到我在出版前发布的"草稿"版本,对比一下就知道. 例如: 原文写&q ...
- 《软件方法(上)业务建模和需求》第2版 勘误(2021年10月9日更新)
说明 勘误中的一部分,特别是很荒谬的错误,其实是编辑自作主张修改而且未和作者沟通造成的.有心的读者如果在网上能找到我在出版前发布的"草稿"版本,对比一下就知道. 例如: 原文写&q ...
- 利用c语言switch函数制作一个简单的计算器 2021年2月7日
今日c语言 #include<stdio.h> #include<math.h> void main() { float a,b,c; char i; printf(" ...
- (更新时间)2021年3月24日 python基础知识(魔法方法)
1.魔法方法 在 python 的类中,有一类方法,这类方法以 `两个下划线开头` 和`两个下划线结尾`, 并且在`满足某个特定条件的情况下,会自动调用`. 这类方法,称为魔法方法如何学习魔法方法: ...
- C语言判断第几天(最简版)
C语言 判断第几天(最简版) 输入年.月.日,计算该日是该年的第几天. 例如 输入: 2012 7 1 输出: 183 输入: 2017 1 1 输出: 1 #include <stdio.h& ...
- 【历史上的今天】12 月 3 日:世界上第一条短信;Fortran 语言之父诞生;百度贴吧上线
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2021 年 12 月 3 日,在 20 年前的今天,电动平衡车(Segway)问世:电动平衡车是一种电力驱动.具 ...
最新文章
- python pptx 从中间加几页_python-pptx---插入表格
- python语言有什么用-为什么现在很多人都使用Python语言有什么优势
- legend3---OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
- 17.观察者模式(Observer Pattern)
- Linux监控(添加自定义监控项,配置邮件告警)
- .net fileupload批量上传可删除_【JavaWeb基础】文件上传和下载(修订版)
- adb启动app_adb命令实战十三步
- @Service @Autowired
- 拼多多上线“医药健康日” 将对最常用的OTC药品等进行补贴
- curl传post数据流
- 小程序丨canvas内容自适应不同尺寸屏幕
- c语言随机抽取小程序_c++ c语言编写抽学号小程序
- 头像+壁纸微信小程序源码
- 第25章 	串行FLASH文件系统FatFs—零死角玩转STM32-F429系列
- VS2013 设置背景图
- Windows常见基本进程八:wuauclt
- file-saver blob前端导出excel文件
- 计算机浮点数格式化表示方法,浮点数在计算机中是如何表示的
- Word目录中自动添加自定义样式的多级标题的方法
- C1任务-10:域名解析
热门文章
- linux 常用命令——MySql 5.7添加用户、删除用户与授权
- 数字证书 X509详解 python解析SSL证书
- Excel日常遇到的问题整理(持续更新)
- 清空MySQL单库下所有表数据 || 删除MySQL单库下所有表
- 台式计算机usb接口无反应6,win7电脑usb接口没反应如何解决 电脑usb接口没反应解决方法...
- 【Pytorch Lighting】第 8 章:自监督学习
- git 移除项目版本控制_Git - 关于版本控制
- Java中文与Base64互转(解决中文乱码的问题)
- Win10 日期/时间修改
- Ubuntu 安装sogo 输入法