题目:给定的一组整数,给定一个值X,找出和为X的任意组合。

思路:将X视为重量x(kg)的物品,放在天平左侧,数组中的每个数字视为重量为y(kg)的砝码,砝码从大到小逐一放置,直到天平平衡,那么选择的砝码的组合就是我们所要的答案。采用递归的方法。

  1. 右侧还有x的余量
  2. 放置第一个砝码后还有x-y1的余量
  3. 放置第二个砝码后还有(x-y1)-y2的余量
  4. 以此类推

static void Main(string[] args)
{NumberGame.Execute();Console.ReadKey();
}
public static class NumberGame
{private static int[] arr = { 1, 8, 3, 6, 5, 2, 9, 7, 4 };private const int TOTAL = 11;    //指定合计数private static int groupNum = 0;class NumberType{public int Number { get; set; }public bool Used { get; set; }}public static void Execute(){Console.WriteLine($"数组[{string.Join(",", arr)}]中任意一组数和为{TOTAL}的所有组合:");List<NumberType> list = arr.OrderBy(x => x).Select(x => new NumberType{Number = x, Used = false}).ToList();FindNums(list, TOTAL, list.Count - 1);}/// <summary>/// 利用递归方法找出所有组合 算法:TOTAL按数组倒序逐一减,如有余数remainder>=0则继续递归/// </summary>/// <param name="list">从小到大排序的数组</param>/// <param name="remainder">剩余数</param>/// <param name="loop">本次循环次数</param>private static void FindNums(List<NumberType> list, int remainder, int loop){if (remainder == 0)//找到一组
        {Console.WriteLine($"第{++groupNum}组:{string.Join(" + ", list.Where(x => x.Used).Select(x => x.Number).ToArray())}");return;}for (int i = loop; i >= 0; i--){if (!list[i].Used && (remainder - list[i].Number) >= 0){list[i].Used = true;FindNums(list, remainder - list[i].Number, i - 1);list[i].Used = false;}}}
}

转载于:https://www.cnblogs.com/zhaoshujie/p/11555586.html

【算法】从一组数中找出和为指定值的任意组合相关推荐

  1. 【面试现场】如何在10亿数中找出前1000大的数

    小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司. 之前小史在BAT三家的面试中已经挂了两家,今天小史去了BAT中的最后一家面试了. 简单的 ...

  2. 如何在 10 亿数中找出前 1000 大的数?

    作者 | channingbreeze 责编 | 胡巍巍 小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司. 之前小史在BAT三家的面试中已 ...

  3. 输入一组数,找出满足某条件的数

    1.输入一组数,找出它的最大值,最小值,平均值. 关键点是要把第一个数赋值给min,max,sum 1 #include<iostream> 2 using namespace std; ...

  4. python找色_python实现从一组颜色中找出与给定颜色最接近颜色的方法

    本文实例讲述了python实现从一组颜色中找出与给定颜色最接近颜色的方法.分享给大家供大家参考.具体分析如下: 这段代码非常有用,可以找到指定颜色相似的颜色,比如有一组8个颜色,现在给定一个rgb格式 ...

  5. python实现从一组颜色中找出与给定颜色最接近颜色的方法

    本文实例讲述了python实现从一组颜色中找出与给定颜色最接近颜色的方法.分享给大家供大家参考.具体分析如下: 这段代码非常有用,可以找到指定颜色相似的颜色,比如有一组8个颜色,现在给定一个rgb格式 ...

  6. 一组数中寻找加和最接近某个值的组合 JAVA实现

    一组数中寻找加和最接近某个值的组合 JAVA实现 最近帮人做了一个题,就是在一组数中寻找一个子集合,使得这个子集合的数的加和最接近给定的某个值,此外,这些数的类型是浮点数.我第一想到是用01背包问题去 ...

  7. 左神算法:在二叉树中找到累加和为指定值的最长路径长度(Java版)

    本题来自左神<程序员代码面试指南>"在二叉树中找到累加和为指定值的最长路径长度"题目. 题目 给定一棵二叉树的头节点 head 和一个 32 位整数 sum,二叉树节点 ...

  8. LeetCode 1865. 找出和为指定值的下标对(哈希)

    文章目录 1. 题目 2. 解题 1. 题目 给你两个整数数组 nums1 和 nums2 ,请你实现一个支持下述两类查询的数据结构: 累加 ,将一个正整数加到 nums2 中指定下标对应元素上. 计 ...

  9. Python 数据结构与算法——从某个列表中找出两个彼此最接近但不相等的数

    先排序,再...(毕竟归并排序的时间复杂度仅为 O(nlogn)O(n\log n))排序的幽灵.排序和查找真是一对好基友. 来看基础版本: from random import randrange ...

最新文章

  1. 业务基础平台产品的现状和发展
  2. break 和continue的用法 java——CSDN
  3. Weblogic 10.3.5在64位Windows系统下的安装和配置
  4. vlc-android编译流程
  5. Flex Failed to connect; session timed out.解决办法
  6. Joseph UVA 1452 Jump
  7. 结构-行为-样式-有趣的函数
  8. php js 终止,使用Server-Sent Events(和Javascript / PHP)的连接会立即停止
  9. 2021年中国茶叶电商发展现状及未来发展趋势分析[图]
  10. springboot自定义start解析(start中配置从数据源)
  11. 计算机个性化桌面后总是恢复,Win7切换主题导致个性化桌面图标失效恢复初始的解决方法...
  12. Pathon 连接数据库
  13. 你每天应该吃多少水果?
  14. vue+gin—— GetcharZp
  15. Unity3D使用LitJson.dll解析报错问题
  16. iOS7中计算UILabel中字符串的高度
  17. 基础论文 (一) ADDA
  18. JDK源码阅读之路【不断更新】
  19. 燃动金秋,Stibo Systems(思迪博) 软件受邀参加2021中国服贸会
  20. Z-INDEX: 999

热门文章

  1. CAN工具 - ValueCAN - 基础介绍
  2. 小米note2不上Android9吗,小米note2和华为g9哪个好?小米note2和华为G9青春版详细区别对比评测...
  3. Docker Compose 练习:投票 App
  4. 能量原理和变分法笔记1:变分法简介
  5. D3.js 制作中国地图 .net 公共基础类
  6. 【现代机器人学】学习笔记五:逆运动学(Inverse kinematics)
  7. 第一章 winds 安装区块链私链 geth并进行节点同步
  8. NIO 学习(三) channel(主要介绍channel----FileChannel详解--通道间的信息传输)
  9. 支付清结算之账户和账务处理(详解)
  10. 使用python开发 百度网盘接口