最近老婆工作上需要用到根据一堆数据,再根据一个已知的和,找到这个和由哪几个数凑得。

看着老婆花时间慢慢随机选数算,这太低效了。网上搜了下,的确有一个execl的凑数插件,工具有使用次数限制。100次就需要花80大洋买。看着也不是多复杂的东西,C#稍微了解一点点,既然找不到免费的,干脆自己写个桌面版的吧(谁让github没搜到呢o(╥﹏╥)o)。

已经附上工具下载链接,源码github链接在文章末尾,需要的自取改代码,不想看实现说明的直接拖到最后。

自己对于C#的winform用的很少,只是写工具会用到一点,实现上其实就是遍历。.

例如1,2,11,3,5,41,22,31,54这9个数据,需要凑和为33的数,

(1)首先进行排序, 排完后为1,2,3,5,11,22,31,41,54

(2)进行遍历,遍历根据组合的个数来,首先假设是1个数就能得到33,那一共9个组合,假设和由两个加数构成,那组合就是1,2 /1,3/1,5/...1,54/2,3/2,5/...31,54/41,54   ,数据放到一个listsrc中,依次遍历数据。

(3)每次遍历时,最前面的数据是慢慢移位的例如1,2遍历过了,那2,1是不需要再遍历了。如何实现自己这块还是花了点时间想了下,自己的实现是新建一个list listindex,list的个数代表组合的加数个数。例如先假定2个数,那么listindex的个数是2,listindex[0]代表第一个加数在源数据的位置,   比如list[0] 是3,那么 listsrc[list[0]] = 11。  每次遍历时,listindex[最后一位]+1,如果加到了listsrc的尾数,那么listindex的倒数第二位+1,重置最后一位的值。  每次+1可以类比两个数加法的实现,会产生进位,进位后,不过不是固定的10进制加法,高位进位后,地位需要重新根据高位位置重设定一下低位的值。一直遍历,直到在这个加数个数的值以及遍历完,加数的个数再+1,再继续遍历。

        public bool ToaddIndex(ref List<int> SrcDataindex, ref List<double> srcData){int c = 0;int lastestIndex = SrcDataindex.Count - 1;  //最后一位的数的indexSrcDataindex[lastestIndex]++;for (int i = lastestIndex; i >= 0; i--){if (c > 0)  //产生了进位{SrcDataindex[i] += c;  //高位进行+1for (int j = i; j + 1 <= lastestIndex; j ++){// 低位根据高位的值重新设定SrcDataindex[j+1] = SrcDataindex[j] + 1;  }}// 判断是否最前面的数大于允许偏移的位置if(SrcDataindex[0] > srcData.Count - (lastestIndex) + 1){SrcDataindex[0] -= c;Console.WriteLine("is 1 false");return false;}if (SrcDataindex[i] > srcData.Count - (SrcDataindex.Count - i)) //该位偏移到了允许最大位{c = 1;  //产生进位}else{return true;  // 当前数目的加数没有遍历完}}return false;}

实际上因为数据进行了排序,所以如果假设加数有3个数,如果和已经大于了我们想要的数,例如已经遍历到了5,11,22 那么剩下的5,11,31组合就不需要遍历了,因为肯定大于33的,所以直接跳到5,22,31 这样可以节省很多的组合数据,随着数据的变多,节省的时间也是很可观的。

源码 github地址  https://github.com/GoGoTryAgain/AutoGetSum

因为是基于.net4.0写的,运行需要电脑带有.netFramework 4.0。

为了防止结果过多卡主,目前限定组合为50个,需要更大的童鞋可以拿源码自己改。

最初还设想,有一堆的数,有多个和待凑数,每个数只会用一次,找到合适的组合的,最后因为老婆说用不到,自己偷懒就没写,界面上还保存着,也许哪天会更新呢~

由和与加数进行凑数的遍历算法相关推荐

  1. python二叉树遍历算法_分享python实现的二叉树定义与遍历

    这篇文章主要介绍了python实现的二叉树定义与遍历算法,结合具体实例形式分析了基于Python定义的二叉树及其常用遍历操作实现技巧,需要的朋友可以参考下 本文实例讲述了python实现的二叉树定义与 ...

  2. 【swjtu】数据结构实验6_二叉树的遍历算法

    实验内容及要求: 编写程序,用先序递归遍历法建立二叉树的二叉链表存储结构,然后输出其先序.中序.后序以及层次遍历结点访问次序.其中层次遍历的实现需使用循环队列.二叉树结点数据类型建议选用字符类型. 实 ...

  3. 重拾算法(3)——用458329个测试用例全面测试二叉树和线索二叉树的遍历算法

    重拾算法(3)--用458329个测试用例全面测试二叉树和线索二叉树的遍历算法 在"上一篇"和"上上一篇"中,我给出了二叉树和线索二叉树的遍历算法.给出算法容易 ...

  4. C#二叉树遍历算法实现浅析

    C#算法实现了二叉树的定义,怎么构造一颗已知的二叉树,用几种常规的算法(先序,中序,后序,层次)进行C#二叉树遍历.希望能给有需要人带来帮助,也希望能得到大家的指点.有关C#数据结构的书在书店里找到, ...

  5. [zhuan]二叉树遍历算法实现(C#2.0)

    本人用C#2.0实现了二叉树的定义,怎么构造一颗已知的二叉树,用几种常规的算法(先序,中序,后序,层次)遍历二叉树.希望能给有需要人带来帮助,也希望能得到大家的指点.有关C#数据结构的书在书店里找到, ...

  6. 图的两种遍历算法——BFS和DFS

    一.BFS,也称广度优先搜索,和二叉树的层次遍历算法类似 //BFS bool visited[MaxVertexNum]; void BFSTraverse(Graph G){for(i=0;i&l ...

  7. C++ STL 常用遍历算法

    C++ STL 常用遍历算法 STL的容器算法迭代器的设计理念 1) STL的容器通过类模板技术,实现数据类型和容器模型的分离  2) STL的迭代器技术实现了遍历容器的统一方法:也为STL的算法提供 ...

  8. 九十五、二叉树的递归和非递归的遍历算法模板

    @Author:Runsen 刷Leetcode,需要知道一定的算法模板,本次先总结下二叉树的递归和非递归的遍历算法模板. 二叉树的四种遍历方式,前中后加上层序遍历.对于二叉树的前中后层序遍历,每种遍 ...

  9. 二叉树的层序遍历算法 + 打印二叉树所有最左边的元素(算法)

    二叉树的层序遍历算法 + 打印二叉树所有最左边的元素(算法) 层序遍历 /** * 树结构定义 */ private static class BinaryNode<T> {BinaryN ...

最新文章

  1. 【工业智能】人工智能真的无所不能吗?
  2. poj 1085 Triangle War 博弈论+记忆化搜索
  3. Openstack_通用模块_Oslo_vmware 创建 vCenter 虚拟机快照
  4. oracle数据库是db还是dbnms,Oracle数据库中各种类型的文件损坏与修复过程详解(2)...
  5. 华夫饼为什么不松软_掌握这2个关键点,5个小细节,3个小技巧,保证烙饼松软又好吃...
  6. postgres 支持的线程数_线程池被打满了怎么处理呢,你是否真的了解线程池?
  7. 利用Mac创建一个 IPv6 WIFI 热点
  8. Altium Designer之原理图
  9. python导入xlrd库_python中xlrd库如何实现文件读取?
  10. 计算机英语翻译3000字,英语专四作文满分范文(二十八):计算机翻译
  11. 网站搜索引擎优化SEO策略及相关工具资源
  12. java培训 lambda表达式_java 8 中lambda表达式学习
  13. GNU __attribute__ 总结
  14. tomcat下的公共jar包配置
  15. King Arthur's Birthday Celebration
  16. java关键字const_java 关键字详解
  17. sdk 今日头条_今日头条大数据分析平台艰辛成长路
  18. CentOS7图形界面启动报错unable to connect to X server
  19. iOS添加pch头文件
  20. (转)逃脱者可获生机(中)

热门文章

  1. 服务器电脑上保存的文件找不到了,保存在电脑上的word文件突然找不到怎么办?该如何找回来...
  2. 数字藏品|NFT整个行业的调研报告 数字藏品有价值吗 数字藏品是什么 百度数字藏品
  3. 微信小程序利用canvas绘制一个静态百分比圆圈
  4. python 卡方分布值_python数据分析探索变量之间的关系
  5. 凸显计算机学院特色的剧本,高职院校非计算机专业计算机课程的教学改进策略探析 - 计算机教育论文大全 - 小品台词 - 中国国际剧本网...
  6. PoisonIvy Rat 远程溢出实战
  7. 基于springboot校园志愿者管理系统设计与实现的源码+文档
  8. 第9章第24节:制作商业计划书的盈利模式幻灯片 [PowerPoint精美幻灯片实战教程]
  9. [渝粤教育] 中国矿业大学 货币金融学 参考 资料
  10. mysql 索引案例与索引策略