当前位置: 首页 > news >正文

华为OD机试-MELON的难题-DFS(JAVA 2025A卷)

在这里插入图片描述

题意是从N快雨花石中找出最少拿出雨花石的块数,使得雨花石可以均分,直接使用dfs解决此类组合问题

package com.example.demo.bean;import java.util.Arrays;
import java.util.LinkedList;
import java.util.Scanner;public class YuHuaStone {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = Integer.parseInt(sc.nextLine());int[] nums = new int[n];for (int i = 0; i < n; i++) {nums[i] = sc.nextInt();}System.out.println(yuHuaStone(nums));}private static int res = Integer.MAX_VALUE;private static int yuHuaStone(int[] nums) {int sum = Arrays.stream(nums).sum();if (sum % 2 != 0) return -1;int[] used = new int[nums.length];LinkedList<Integer> path = new LinkedList<>();Arrays.sort(nums);dfs(nums, nums.length - 1, path, used, sum / 2);return res == Integer.MAX_VALUE ? -1 : res;}private static void dfs(int[] nums, int start, LinkedList<Integer> path, int[] used, int target) {if (target == 0) {res = Math.min(res, path.size());return;}for (int i = start; i >= 0; i--) {// 雨花石累加和>target,或者累加的雨花石数目>已算出的最小雨花石数目,剪枝if (target <= 0 || path.size() >= res) break;// 同一层内,重复重量的雨花石直接剪枝if (i < nums.length - 1 && nums[i + 1] == nums[i] && used[i + 1] == 0) continue;path.addLast(nums[i]);used[i] = 1;dfs(nums, i - 1, path, used, target - nums[i]);path.removeLast();used[i] = 0;}}
}

相关文章:

  • IntersectionObserver API应用场景示例代码详解
  • Netty PoolChunk依赖的自定义数据结构:IntPriorityQueue和LongLongHashMap
  • 计算机网络:(五)信道复用技术,数字传输系统,宽带接入技术
  • C++中所有数据类型
  • CppCon 2017 学习:folly::Function A Non-copyable Alternative to std::function
  • 目标检测之YOLOV11自定义数据使用OBB训练与验证
  • Apache ECharts-01.介绍
  • Arduino Nano 33 BLE Sense Rev 2开发板使用指南之【外设开发】
  • 响应式数据框架性能深度分析报告(@type-dom/signals)
  • EchoEar(喵伴):乐鑫发布与火山引擎扣子联名 AI 智能体开发板
  • 20250619在Ubuntu20.04.6下编译Rockchip瑞芯微原厂的RK3576的Buildroot系统
  • SSH服务与rsync服务配置实战
  • 内网运行控制四百来个海康威视硬件物联网定员管控软件(华为平板电脑版)
  • 3.5 map_saver地图的保存与加载
  • STM32 定时器讲解
  • 【Bug:docker】--Docker同时部署Dify和RAGFlow出现错误
  • 《汇编语言:基于X86处理器》第2章 复习题
  • 【AI论文】SWE-Factory:您的自动化工厂,提供问题解决培训数据和评估基准
  • Java 正则表达式高级用法
  • 全局数据的处理
  • 深圳乐安居网站谁做的/长春网站优化咨询
  • 做网站会用到什么语言/代运营公司排行榜
  • 青岛市北区网站制作公司/web网站模板
  • 网站建设公司业务员/百度搜索关键词统计
  • 电子商务网站建设费用/竞价开户
  • 贵州专业网站建设公司哪家好/查询域名注册信息