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

南通网站建设团队免费百度下载

南通网站建设团队,免费百度下载,自己搭服务器 做购物网站成本,建设一个地方门户网站2025 B卷 100分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…

在这里插入图片描述

2025 B卷 100分 题型

本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式;
并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析;
本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分享》

华为OD机试真题《小明减肥》:


文章快捷目录

题目描述及说明

Java

python

JavaScript

C++

C

GO


题目名称:小明减肥


  1. 知识点:组合数学、回溯/枚举
  2. 时间限制:1秒
  3. 空间限制:256MB
  4. 限定语言:不限

题目描述

小明有n个可选运动,每个运动对应一个卡路里值。他需要从中选出k个运动,使得这些运动的卡路里总和恰好为t。给定nkt及每个运动的卡路里列表,求可行的方案数量。

输入描述

  • 第一行输入三个整数:n(运动数量,0 < n < 10)、t(目标卡路里总和,t > 0)、k(需选的运动数,0 < k ≤ n)。
  • 第二行输入n个正整数,表示每个运动的卡路里值(均 > 0),以空格分隔。

输出描述
输出满足条件的方案数量(整数)。

示例
输入:

4 3 2  
1 1 2 3  

输出:

2  

解释:可选方案为[1,2][1,2](注意重复卡路里值的不同索引视为不同方案)。


Java

问题分析

小明需要从n个运动中选择k个,使得它们的卡路里总和恰好为t。我们需要计算所有符合条件的组合数量。每个运动的卡路里值可能重复,但不同索引视为不同方案。

解题思路

  1. 回溯枚举:遍历所有可能的k元素组合,统计满足条件的方案数。
  2. 剪枝优化:在递归过程中,若已选元素超过k或总和超过t,提前终止该路径。
  3. 索引处理:通过限定遍历起始索引,确保生成的组合是无序且不重复的。

代码实现

import java.util.Scanner;public class Main {private static int n;        // 运动总数private static int t;        // 目标卡路里总和private static int k;        // 需要选的运动数private static int[] calories; // 各运动卡路里值数组private static int result = 0; // 合法方案计数器public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 读取输入参数n = scanner.nextInt();t = scanner.nextInt();k = scanner.nextInt();calories = new int[n];for (int i = 0; i < n; i++) {calories[i] = scanner.nextInt();}scanner.close();// 调用回溯函数,初始状态:从索引0开始,已选0个,总和0backtrack(0, 0, 0);System.out.println(result);}/*** 回溯函数,递归遍历所有可能的运动组合* @param start 当前处理的起始索引(避免重复组合)* @param count 已选的运动数目* @param sum   当前卡路里总和*/private static void backtrack(int start, int count, int sum) {// 剪枝:已选数目超过k,或总和超过t,直接返回if (count > k || sum > t) {return;}// 找到k个元素组合,判断是否符合总和要求if (count == k) {if (sum == t) {result++; // 符合条件,计数器加一}return; // 无论是否符合,均停止递归}// 遍历当前可选的索引范围 [start, n-1]for (int i = start; i < n; i++) {// 选择当前元素,递归处理下一个索引backtrack(i + 1, count + 1, sum + calories[i]);}}
}

代码解析

  1. 输入处理

    • 读取ntk和卡路里数值数组,存入对应变量。
  2. 回溯函数backtrack

    • 参数说明start确保组合按索引递增生成避免重复;count记录已选元素数量;sum记录当前总和。
    • 剪枝条件:若当前路径已不可能满足条件(数量超限或总和超限),提前终止。
    • 终止条件:当已选元素等于k时,检查总和是否等于t并更新计数器。
    • 循环遍历:从start开始依次选择元素,递归处理后续元素。

示例测试

  1. 输入示例1

    4 3 2  
    1 1 2 3  
    

    输出2
    解析:选择第0、2元素(1+2)和第1、2元素(1+2)。

  2. 输入示例2

    3 5 2  
    2 3 4  
    

    输出1
    解析:只有组合(2,3)满足和为5。

  3. 输入示例3

    5 10 3  
    2 2 3 3 4  
    

    输出1
    解析:组合(3,3,4)符合和为10。

综合分析

  1. 时间复杂度

    • 最坏情况为O(C(n,k)),例如取k个元素的组合数。由于n<10,实际运算量极小。
  2. 空间复杂度

    • 递归栈深度为k,复杂度O(k)。卡路里数组存储为O(n)。
  3. 正确性保障

    • 索引递增:避免重复组合,确保每个组合的唯一性。
    • 剪枝优化:提前终止无效路径,提升效率。
  4. 方案优势

    • 简洁高效:递归结构清晰,适用于小规模数据。
    • 无重复计算:通过索引递增生成组合,确保每个组合只处理一次。
  5. 适用场景

    • 需要枚举组合的小规模问题(如n≤10),例如算法竞赛或数据分析。

python

问题分析

小明需要从n个运动中选择k个,使其卡路里总和恰好为t。我们需要统计所有满足条件的组合数量,不同索引的同值卡路里视为不同方案。

解题思路

  1. 回溯枚举:遍历所有可能的k元素组合,统计满足条件的方案数。
  2. 剪枝优化:在递归过程中,若已选元素超过k或总和超过t,提前终止该路径。
  3. 索引递增策略:通过固定选择顺序避免重复组合。

代码实现

n, t, k = map(int, input().split())
calories = list(map(int, input().split()))
result = 0def b
http://www.dtcms.com/wzjs/179960.html

相关文章:

  • 简单做网站营销课程
  • IIS自己做的网站 无法访问数据库网站流量统计工具
  • 开发公司解除前期物业服务合同谷歌seo搜索引擎下载
  • 国外建站网站营销策略的概念
  • 哪里有网站开发技术网络营销的方法包括哪些
  • 一定要知道的网站长沙网站策划
  • 佛山顺德网站建设公司谷歌chrome官网
  • 建设银行教育网站百度搜索官网
  • 房地产集团网站欣赏江苏seo和网络推广
  • 提升学历东莞网络推广及优化
  • 南通专业做网站公司重庆疫情最新数据
  • 做海外批发有什么好的网站好郴州网站推广
  • 温岭市建设局网站审批公示设计网站都有哪些
  • 上海的网站建设公司哪家好seochinaz查询
  • 武汉光谷企业网站建设查看域名每日ip访问量
  • 做微信网站公司名称百度灰色关键词排名技术
  • 浙江高端网站建设公司优化器
  • 做网站的日文如何在百度推广
  • 广州游戏网站建设今天的热点新闻
  • 今日头条新闻死人新闻seo包年优化
  • 淄博市建设档案馆网站热门关键词查询
  • 做网站找外包公司要要搞清楚什么常用的营销策略
  • wordpress 初始化插件seo深圳培训班
  • 5款免费网站管理系统pc端百度
  • 域名买卖网站2022拉新推广赚钱的app
  • 做网站上传空间什么意思免费推广方法有哪些
  • 礼品做便宜的网站北京网站建设公司
  • 广州哪个公司做网站seo搜索引擎排名优化
  • 过年做啥网站致富培训学校招生营销方案
  • 广州网站备案方案沈阳seo排名外包