C# 一个数组集合,任意组合,不遗漏,不重复
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace listTst
- {
- class Program
- {
- static void Main(string[] args)
- {
- var sw = Stopwatch.StartNew();
- var array = new List<Storage>()
- {
- new Storage{ Id = , Name = "A" },
- new Storage{ Id = , Name = "B" },
- new Storage{ Id = , Name = "C" },
- new Storage{ Id = , Name = "D" },
- new Storage{ Id = , Name = "E" },
- new Storage{ Id = , Name = "F" },
- new Storage{ Id = , Name = "G" },
- new Storage{ Id = , Name = "H" },
- new Storage{ Id = , Name = "I" },
- };
- var result = new List<Group>();
- array.ForEach(a => { result.Add(new Group(a)); });
- for (int count = ; count <= array.Count; count++)
- {
- Test(result, array, , count);
- }
- sw.Stop();
- foreach (var group in result)
- {
- Console.WriteLine(group.Name);
- }
- Console.WriteLine($"组合数量:{result.Count}");
- Console.WriteLine($"耗时:{sw.ElapsedMilliseconds}ms");
- Console.ReadLine();
- }
- static void Test(List<Group> result, List<Storage> array, int begin, int count)
- {
- var list = new List<Storage>();
- var end = begin + count - ;
- if (end > array.Count) return;
- for (int i = begin; i < end; i++)
- {
- list.Add(array[i]);
- }
- if (list.Count < count)
- {
- for (int index = end; index < array.Count; index++)
- {
- var group = new Group(list);
- group.Storages.Add(array[index]);
- result.Add(group);
- }
- }
- if (++begin < array.Count) Test(result, array, begin, count);
- }
- class Group
- {
- public Group(Storage storage)
- {
- Storages.Add(storage);
- }
- public Group(List<Storage> list)
- {
- Storages.AddRange(list);
- }
- public string Name => string.Concat(Storages.Select(a => a.Name));
- public List<Storage> Storages = new List<Storage>();
- }
- class Storage
- {
- public int Id { get; set; }
- public string Name { get; set; }
- }
- }
- }
C# 一个数组集合,任意组合,不遗漏,不重复的更多相关文章
- 求从n个数组任意选取一个元素的所有组合
最近做项目碰到这个问题,如题从n个数组任意选取一个元素的所有组合.比如已知数组是[1, 3]; [2, 4]; [5]; 最后组合结果是[1, 2, 5]; [1, 4, 5]; [3, 2, 5] ...
- python 给定数组任意组合等于一个定值的所有解
抛出问题: 求给定数组任意组合等于一个定值的所有解 例如列表l = [1, 2, 3, 4, 5],求任意组合的结果为10的所有答案 问题分析: 实际就是列表的所有排列组合,然后算出每个排列组合的值, ...
- python实现给定K个字符数组,从这k个字符数组中任意取一个字符串,按顺序拼接,列出所有可能的字符串组合结果!
题目描述:给定K个字符数组,从这k个字符数组中任意取一个字符串,按顺序拼接,列出所有可能的字符串组合结果! 样例: input:[["a","b"," ...
- 谷歌面试题:输入是两个整数数组,他们任意两个数的和又可以组成一个数组,求这个和中前k个数怎么做?
谷歌面试题:输入是两个整数数组,他们任意两个数的和又可以组成一个数组,求这个和中前k个数怎么做? 分析: "假设两个整数数组为A和B,各有N个元素,任意两个数的和组成的数组C有N^2个元素. ...
- 4.产生10个1-100的随机数,并放到一个数组中 (1)把数组中大于等于10的数字放到一个list集合中,并打印到控制台。 (2)把数组中的数字放到当前文件夹的numArr.txt文件中
package cn.it.text; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayLis ...
- [java大数据面试] 2018年4月百度面试经过+三面算法题:给定一个数组,求和为定值的所有组合.
给定一个数组,求和为定值的所有组合, 这道算法题在leetcode应该算是中等偏下难度, 对三到五年工作经验主要做业务开发的同学来说, 一般较难的也就是这种程度了. 简述经过: 不算hr面,总计四面, ...
- 【剑指offer】找出数组中任意一个重复的数字,C++实现
原创博文,转载请注明出处! # 题目 # 思路 对于长度为n的数组,范围为0~n-1的数字而言,如果不粗在重复数字,则排序后数组元素和数组角标相同.如果存在重复数字,则在排序的过程中会出现不同下标对应 ...
- MySQLUNION_连接两个以上的 SELECT 语句的结果组合到一个结果集合
MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中.多个 SELECT 语句会删除重复的数据. 描述 MySQL UNION 操作符用于连接两个以上的 SE ...
- 求一个集合S中m个元素的所有排列以及一个数组A的全排列—递归实现版完整代码
说明,本文全文代码均用dart语言实现. 求一个集合S中m个元素的所有排列情况,并打印,非常适合用递归的思路实现.本文给出了两种实现方法,一种是给定的填充排列数组长度是固定的,一种是可变长度的.两种方 ...
随机推荐
- iOS tableview的常用delegate和dataSource执行顺序
在这次项目中遇到了一个特别奇葩的问题:表视图创建的cell在7以上的系统能正常运行显示,在模拟器上就不能正常实现......为解决这个问题,纠结了好久...... 对在7系统上不显示的猜测: 用mas ...
- python之selenium玩转鼠标操作(ActionChains)
前提: 一般人用selenium自动化时,会用到模拟鼠标操作的情况,像单击,双击,右击,左击啊等,这个时候我们就要用到ActionChains了. 内容: 1.ActionChains用法整理 cli ...
- Django:(01) 关于什么是Django?
一.从 WSGI 开始了解 Django 在了解 Django 之前有必要先了解一下 Python 被用于 Web 开发的基础协议——WSGI. 在开发 web 应用时,我们不希望接触到TCP连接.H ...
- javaweb期末项目-stage3-项目测试和发布
项目综合报告.项目测试.项目部署 .rar---下载 说明:解压密码为袁老师的全名拼音(全小写) 相关链接: 项目结构:https://www.cnblogs.com/formyfish/p/1082 ...
- 如何快速在Github找到你想要的东西
众所周知 Github是全球最大的xx交友平台,虽然被收购了.但是不并没有什么影响. 使用Git可以做很多事,在这里不再缀述,上面的资源也是多种多样,应有尽有 对于这样一个平台,我们想快速找到自己需要 ...
- Linear regression with one variable - Cost function intuition I
摘要: 本文是吴恩达 (Andrew Ng)老师<机器学习>课程,第二章<单变量线性回归>中第8课时<代价函数的直观认识 - 1>的视频原文字幕.为本人在视频学习过 ...
- 告诉你:DOS系统实例手册系列专辑连载中
DOS系统实例手册系列专辑连载中 内容提要:
- Hash冲突的四种解决办法
一.哈希表简介 非哈希表的特点:关键字在表中的位置和它自检不存在一个确定的关系,查找的过程为给定值一次和各个关系自进行比较,查找的效率取决于给定值进行比较的次数. 哈希表的特点:关键字在表中位置和它自 ...
- IO-file-03 文件的长度
package com.bwie.io; import java.io.File; public class FileDemo4 { /**文件字节数 * length():字节数 文件夹 0 * * ...
- Guava 工具类之 Splitter的使用
Splitter可以对字符串进行分割,在分割时的方式有2种, 1.按字符/字符串分割 2.按正则进行分割 Splitter在分割完成时可以转换成list和map 一.按字符进行分割 //1.用指定字符 ...