首页 > 其他分享 >给定n个多种颜色的球,如何将球分组,保证每组内球颜色不能相同,且分组的数量要最小。

给定n个多种颜色的球,如何将球分组,保证每组内球颜色不能相同,且分组的数量要最小。

时间:2023-08-18 19:56:08浏览次数:44  
标签:颜色 color List colorCount int 将球 分组 public


using System; using System.Collections.Generic; public class BallColorGroup { public int Color { get; set; } public int Count { get; set; } } public class BallColorGrouping { public static List<List<int>> GroupBalls(List<int> colors) { Dictionary<int, int> colorCount = new Dictionary<int, int>(); // 统计每种颜色球的数量 foreach (int color in colors) { if (!colorCount.ContainsKey(color)) { colorCount[color] = 0; } colorCount[color]++; } List<List<int>> groups = new List<List<int>>(); // 对颜色球按照数量由多到少进行排序 var sortedColors = colorCount.Keys; Array.Sort(sortedColors.ToArray(), ((a, b) => colorCount[b].CompareTo(colorCount[a]))); foreach (int color in sortedColors) { int count = colorCount[color]; // 在现有分组里查找能放置当前颜色的分组 bool groupFound = false; foreach (List<int> group in groups) { // 检查分组中是否有相同颜色的球 if (!group.Contains(color)) { group.Add(color); count--; groupFound = true; break; } } // 如果找不到能放置当前颜色的分组,则创建新的分组 if (!groupFound) { List<int> newGroup = new List<int> { color }; count--; groups.Add(newGroup); } // 将剩余颜色球加入新分组中 while (count > 0) { List<int> newGroup = new List<int> { color }; count--; groups.Add(newGroup); } } return groups; } public static void Main(string[] args) { List<int> ballColors = new List<int> { 1, 2, 1, 3, 2, 4, 5, 3, 5, 4, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6 }; List<List<int>> colorGroups = GroupBalls(ballColors); // 输出分组结果 for (int i = 0; i < colorGroups.Count; i++) { Console.WriteLine($"Group {i + 1}: {string.Join(", ", colorGroups[i])}"); } } }

 

标签:颜色,color,List,colorCount,int,将球,分组,public
From: https://www.cnblogs.com/winchance/p/17641477.html

相关文章

  • java stream分组之后求和
    javastream分组之后求和癞蛤蟆吃了小天鹅于2022-08-2609:37:42发布6023收藏4文章标签:java版权注:elementComponentDtos.stream().mapToDouble(ElementComponentDto::getAmount).sum();为求和可以根据返回类型的不同去改变相对应的求和函数(mapToDouble)注BigDecimal为了保......
  • echarts 背景颜色透明和提示框背景颜色与透明度
    echarts背景颜色透明描述:使用'dark'系列主题初始化控件,控件会自带黑色背景色,与页面整体风格不符合,所以需要将其背景颜色设置为透明.官网文档:http://echarts.baidu.com/option.html#backgroundColor方法一:varoption={backgroundColor:'rgba(128,128,128,0.1)'//r......
  • 在Typora中使用AutoHotkey 2.0实现使用快捷键设置文本颜色
    使用Typora时不能设置文本颜色,总是觉得不方便,于是在网上搜索,发现有个小工具:AutoHotkey,编写脚本后,通过快捷键的方式可以设置Typora的文本颜色。下载软件到https://www.autohotkey.com/这个网址下载AutoHotkey并安装脚本实现网上很多实现方式都是基于AutoHotkeyv1.0、v1.1的,Au......
  • v-charts 自定义堆叠面积图背景颜色
    下载npmiv-charts-Smain.js引入importVeLinefrom'v-charts/lib/line.common'Vue.component(VeLine.name,VeLine)使用<ve-line:data="chartData":settings="chartSettings"></ve-line>exportdefault{data(){......
  • teamcenter awc 开发-柱状图、饼状图修改颜色
    1、在对应的chartProviders下面添加"chartColorOverrideClass":"hf_aw-charts-chartColor"2、在src下创建一个scss文件@import'mixins/mixins';.hf_aw-charts-chartColor1{   background-color:#426ab3;}.hf_aw-charts-chartColor2{   backgroun......
  • Hive SQL 的 ntile 分组切片函数
    HiveSQL的ntile函数用于将分组数据按照顺序切分成n组,并返回当前切片值。如果切片不均匀,默认增加第一个切片的分布。它把有序的数据集合「平均分配」到指定的数量(n)个桶中,将桶号分配给每一行。如果不能平均分配,则优先分配较小编号的桶,并且各个桶中能放的行数最多相差1。语法......
  • 数组奇数偶数分组,并排序
    数组奇数偶数分组,并排序  PHPJS套路也差不多googgirl于2018-07-1916:59:50发布3647收藏2版权对数组按奇数偶数分组,并进行排序python代码实现如下:aa=[32,35,1,2,34,33]even=[]odd=[]foriinaa:ifi%2==0:even.append(i)else:odd.appe......
  • VTK 实例5:设置椎体颜色属性
    1#include"vtkAutoInit.h"2VTK_MODULE_INIT(vtkRenderingOpenGL2);3VTK_MODULE_INIT(vtkInteractionStyle);45#include<vtkConeSource.h>//源数据6#include<vtkPolyDataMapper.h>//数据映射7#include<vtkRenderer.h>//绘制器8#......
  • 1484. 按日期分组销售产品
    1484.按日期分组销售产品2023年8月14日09:49:541484.按日期分组销售产品简单SQLSchemaPandasSchema表Activities:+-------------+---------+|列名|类型|+-------------+---------+|sell_date|date||product|varchar|+---------......
  • 13.1.1 翻转裁减,改变颜色,结合多种图像增广方法进行图像增广
    一.图像增广的好处随机改变训练样本可以减少模型对某些属性的依赖,从而提高模型的泛化能力。裁剪图像可以减少模型对于对象出现位置的依赖以不同的方式裁剪图像,使感兴趣的对象出现在不同的位置,减少模型对于对象出现位置的依赖调整亮度、颜色等因素可以降低模型对颜色的敏感度。二......