星际篮球争霸赛 java题解

要求更多人分数相同即得到mvp,要求组数presentGrop尽可能多,从大到小枚举分组数presentGrop。
对输入的分数数组进行分配,分配为presentGrop个组,用tmp[i]记录value[i]被分配到哪一组了。
判断能否成功分组:
如果当前组总分超过每组所需,失败。如果当前组总分等于每组所需,分配当前组成功。如果当前组已经是最后一组,那么返回成功。如果还有下一组,把分数数组继续分配给下一组。对于每一个未被分配的分数,尝试将该分数分给下一组,递归验证是否成功。如果成功,说明当前分组数可行(最终答案是分组数中最大的,即平均每组分数最小的)。如果不成功,取消把这个分数分配给这一组的决定,把这个分数标记为未分配。

class Solution {public int getResult(int[] values) {int l = values.length;//l代表输入得分数组的长度int sum = 0; //sum代表数组元素总和int max = -1;  //values数组中最大的元素。int[] temp = new int[l]; //temp[i]表示value[i]在分完组后的第几组,每一个value[i]都对应一个temp[i]for (int x : values) {sum += x;max = Math.max(max, x);}int groupMax = sum / max;//最多能分的组数。//遍历分组数。mvp得分一定是整数,如果是小数跳过ArrayList<Integer> mintarget = new ArrayList<Integer>();//mintarget列表是用来存放能分组之后的每组总分  可以分组的每组分数// 因为题目要求总分最小,所以最后要判断。Integer min = 0;for (int presentGrop = groupMax; presentGrop >= 1; presentGrop--) {if (sum % presentGrop != 0) {//每组分数不是总分的因子continue;}//temp[i]表示value[i]在分完组后的第几组。// 初始为0表示value[i]还没有被分过组,默认for (int j = 0; j < l; j++) {temp[j] = 0;}//输入的分数、分组情况、总组数、每组的分数、目前组的分数还差多少、当前是第几组if (judge(values, temp, presentGrop, sum / presentGrop, sum / presentGrop, 1)) {mintarget.add(sum/presentGrop);//可分,存放每组分数//如果能成功分组,那就把每次分组完后每一组的总分放到列表当中。min = Collections.min(mintarget);}}System.out.println(min);return -1;}
//   判断能否成功分组
//     temp[i]表示value[i]在分完组后的第几组,每一个value[i]都对应一个temp[i]
//     *presentGrop表示一共被分为几组,
//     targetTotal表示每一组的
//     total表示目前第groupId组里面还需要填充的值
//     groupId表示被分到第几组,属于区间[1,presentGrop],
//public static boolean judge(int[] values, int[] temp, int presentGrop, int targetTotal, int total, int groupId) {if (total < 0) {//目前这组分数已经比需要的每组分数高了,越界了,没成功分组return false;}if (total == 0) {//表示第groupId组已经分配完毕groupId++;//需要分配下一组total = targetTotal;//下一组还未开始分配,需要填充的值重置为targetTotal,下一组还需要的分数if (groupId == presentGrop + 1) {//表示所有组都分配完成   (+1前)当前组别=总组数return true;}}//对输入的所有分数进行分配for (int i = 0; i < values.length; i++) {if (temp[i] != 0) {//表示value[i]已经分配过了,跳过continue;}temp[i] = groupId;//尝试分配value[i]到第groupId组if (judge(values, temp, presentGrop, targetTotal, total - values[i], groupId)) {//判断分配完该value[i]后能否成功分组,只需改变total的值=total-values[i]return true;}//如果不成功,才会跳到此步temp[i] = 0;//不能成功分组,把value[i]置为未分配过}return false;}
// main函数,Scanner方法主要是创建一个对象接收输入的数据。public static void main(String[] args) {Scanner scan = new Scanner(System.in);int t = scan.nextInt();//输入t为第一行数字,表示有得分的分钟数if (t < 1 || t > 50) {System.out.println("input error");return;}//scoreArray为第二行数字组成的一个数组,代表每一分钟的得分,共有t个元素int[] scoreArray = new int[t];for (int i = 0; i < scoreArray.length; ++i) {scoreArray[i] = scan.nextInt();}//在主函数中调用其他方法,需要先创建一个对象,然后使用对象调用方法。Solution solution = new Solution();//getResult方法判断输入的t个元素能否分组,并且每一组的总分一样。solution.getResult(scoreArray);}
}

某付费专栏的没有注释根本看不懂,搜到了一篇写的很好的
参考博文,在他的基础上加了一点点注释

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/760190.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux常用命令之文件权限类

1.1 Linux的文件属性 在Linux里使用ll或者ls-l命令来显示一个文件的属性以及文件所属的用户和组。 以-开头&#xff1a;普通文件 以d开头&#xff1a;目录 以l开头&#xff1a;链接 以c开头&#xff1a;字符类型的设备文件(例如&#xff1a;鼠标、键盘&#xff0c;他们输入…

排序算法:归并排序(递归)

文章目录 一、归并排序的思路二、代码编写 先赞后看&#xff0c;养成习惯&#xff01;&#xff01;&#xff01;^ _ ^<3 ❤️ ❤️ ❤️ 码字不易&#xff0c;大家的支持就是我坚持下去的动力。点赞后不要忘了关注我哦&#xff01; 所属专栏:排序算法 一、归并排序的思路 单…

nRF Sniffer 在Wireshark中的使用

一、简介 使用nRF Sniffer在wireshark中抓包是经常使用的。但是每次抓包会获取到空气中所有的数据包&#xff0c;数据量非常大。而对于开发人员而言&#xff0c;只需要其中特定的信息。此时就需要掌握数据的过滤语句。 二、过滤 1.根据MAC地址进行过滤 btle.advertising_add…

家政系统平台开发的优势

管理统一化&#xff1a;家政系统能够实现线上线下的统一整体管理运营&#xff0c;包括宣传、销售、订单、分配、执行、售后等各个环节&#xff0c;使得管理更加智能化、便捷化。这种统一化管理有助于提升公司的运营效率&#xff0c;降低成本&#xff0c;并提高客户满意度。客户…

Debezium日常分享系列之:Debezium2.5稳定版本之Mysql连接器的数据变更事件

Debezium日常分享系列之&#xff1a;Debezium2.5稳定版本之Mysql连接器的数据变更事件 一、数据变更事件二、更改事件键三、更改事件值四、创建事件五、更新事件六、主键更新七、删除事件八、墓碑事件九、截断事件十、Debezium技术总结 一、数据变更事件 Debezium MySQL 连接器…

2023年蓝桥杯省赛——平方差

目录 题目链接&#xff1a;1.平方差 - 蓝桥云课 (lanqiao.cn) 思路 暴力偷分 发现规律 发现蹊跷 总结 题目链接&#xff1a;1.平方差 - 蓝桥云课 (lanqiao.cn) 思路 咱就是说&#xff0c;写蓝桥杯的题目的第一件事情是什么&#xff0c;那就是不管三七二十一先暴力一下把能…

【爬虫】web自动化和接口自动化

专栏文章索引&#xff1a;爬虫 目录 一、介绍 二、推荐 1.接口自动化 2.Web自动化 一、介绍 爬虫技术一般可以分为两种类型&#xff1a;接口自动化和web自动化。下面是它们的简要介绍&#xff1a; 1.接口自动化 接口自动化技术的主要目的是通过模拟HTTP请求来实现自动化…

Docker在Mac上轻松部署RabbitMQ:从拉取镜像到创建运行带管理界面的容器全攻略

1、去官网下载docker 安装&#xff1a;把图标拉到应用程序即可 https://docs.docker.com/desktop/install/mac-install/ 2、拉取rabbitmq镜像 docker pull rabbitmq:3.8-management 3、创建并启动容器&#xff0c;同时设置环境变量以创建用户和密码 docker run -d --name m…

axure和蓝湖上查看页面的说明和上传文件

蓝湖上传文件 入口 可添加链接和文件 文件可添加 PDF&#xff0c;word&#xff0c;Excel等&#xff0c;不能添加压缩包&#xff0c;可在线预览文件内容 axure元件说明 在原型上添加说明 axure发布页 axure预览页或发布到axure的服务器上&#xff0c;查看页面说明的方法 点…

Go语言学习01-基本程序结构

文章目录 Go语言学习01-基本程序结构基本程序结构应用程序入口退出返回值编写测试程序快速设置连续值基本数据类型类型的预定义值指针类型运算符算数运算符比较运算符用 比较数组 逻辑运算符位运算符&^ 按位 置零 Go语言学习01-基本程序结构 基本程序结构 package main …

C++之模版详解

一.array与vector对比 由图发现&#xff0c;使用array数组是必须提前开好空间&#xff0c;而vector是顺序表&#xff0c;可以实现动态开辟空间 array也支持迭代器&#xff0c;如下&#xff1a; int main() {array<int, 10> arr{ 1,2,3,4,5,6,7,8,9,10 };auto it arr.be…

【感悟《剑指offer》典型编程题的极练之路】01数组篇!

​​​​​​​ ​​​​​​​ 个人主页&#xff1a;秋风起&#xff0c;再归来~ ​​​​​​​ 文章所属专栏&#xff1a;《剑指offer》典型编程题的极练之路 ​​​​​​​ ​​​​​​​ …

内网横向1

IPC$详解 IPC( Internet Process Connection) 共享 “ 命名管道 ” 的资源 , 是为了实现进程间通信而开放的命名管道。 IPC 可以通过验证用户名和密码获得相应的权限&#xff0c;通常在远程管理计算机和查看计算机的共享资源时使用 通过 ipc$ &#xff0c;可以与目标机器建立连…

vue3+ts+vite axios封装请求并扩展入参

requset.ts import axios, { AxiosResponse } from axios import { getToken, removeToken } from @/utils/auth// 创建axios实例 const service = axios.create({baseURL: , // 所有的请求地址前缀部分(没有后端请求不用写)timeout: 60000 // 请求超时时间(毫秒)// withCrede…

第六十一回 放冷箭燕青救主 劫法场石秀跳楼-编译安装飞桨paddlepaddle@openKylin+RISCV

卢俊义在水里被张顺抓住&#xff0c;用轿子抬到了梁山。宋江等人下马跪在地上迎接&#xff0c;请他坐第一把交椅。卢俊义宁死不从&#xff0c;大家只好说留他在山寨几天&#xff0c;先让李固带着马车货物回去。吴用对李固说&#xff0c;你的主人已经答应坐第二把交椅了&#xf…

企业微信应用消息点击打开小程序的方法

官方给的企业微信消息有两种&#xff1a;小程序消息和应用消息 小程序消息&#xff1a;是可以直接点击打开小程序的&#xff0c;但是在微信中收不到消息。&#xff08;企业微信中绑定小程序即可&#xff09; 应用消息&#xff1a;可以在微信中收到&#xff0c;但是不能直接点…

安科瑞智能断路器产品介绍【可监可控 远程操控 短路保护】

开发背景 过去几年智慧用电的产品应用中&#xff0c;大多数只安装于进线测。主要存在以下几个问题&#xff1a;难定位&#xff0c;不知道具体哪个回路出线问题&#xff0c;排查困难&#xff1b;出线过载或线缆温度过高无法知晓&#xff1b;即使是出线回路安装了的场景&#xf…

Vue3 依赖注入provide与inject

简介 关于provide与inject下面是vue官网上的一些介绍 通常情况下&#xff0c;当我们需要从父组件向子组件传递数据时&#xff0c;会使用props。想象一下这样的结构&#xff1a;有一些多层级嵌套的组件&#xff0c;形成了一颗巨大的组件树&#xff0c;而某个深层的子组件需要一个…

HarmonyOS卡片刷新服务,信息实时更新一目了然

如今衣食住行娱乐影音等App占据了大多数人的手机&#xff0c;一部手机可以满足日常大多需求&#xff0c;但对需要经常查看或进行简单操作的场景来说&#xff0c;总需要用户点开App操作未免过于繁琐。 针对该问题&#xff0c; HarmonyOS SDK为用户提供了Form Kit&#xff08;卡…

ARM64汇编07 - 访存指令

访存指令是ARM64汇编语言中的一部分&#xff0c;涵盖了数据访问和内存操作的指令。这些指令使处理器能够与内存进行交互&#xff0c;包括读取数据、写入数据以及执行其他内存相关的操作。理解这些指令对于理解处理器如何与内存交互以及如何管理数据至关重要。 访存指令介绍两个…