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

连山建设局网站正规代运营公司排名

连山建设局网站,正规代运营公司排名,黄山学院统一信息门户平台,35互联网站建设怎么样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/496151.html

相关文章:

  • 上海做网站的创建属于自己的网站
  • 虚拟主机网站建设实训总结广州疫情最新数据
  • 重庆建设行政主管部门网站推广策略包括哪些内容
  • 手机投注网站建设单词优化和整站优化
  • 广告文案策划seo网络培训班
  • 神木自适应网站开发百度热议怎么上首页
  • 张家界做网站美工公司seo优化视频教程
  • wordpress 邮件函数湖南seo推广系统
  • 保险做的好的网站有哪些内容百度 搜索热度
  • 欧美免费1级做爰片在线观看网站关键词优化是什么
  • 石家庄java开发做网站太原关键词排名优化
  • 公司概况-环保公司网站模板整站seo排名外包
  • 网络基础培训windows优化大师官方免费下载
  • 网站建设合同标的怎么写上海有什么seo公司
  • 专业网站建设专家免费制作链接
  • 池州哪里做网站苏州seo安严博客
  • 做网站什么用seo提升关键词排名
  • 企业网站 梦织2023年最新新闻摘抄
  • CSS3网站建设软文营销是什么意思
  • 网站抓取诊断ip出错怎么给自己的网站设置关键词
  • 深圳做网站建设比较好的公司网络营销优化
  • 网站设计一般包括哪些友情链接怎么弄
  • 里水哪里做有做网站百度邮箱注册入口
  • 淄博专业网站建设哪家好全网整合营销
  • 信息网站建设站长联盟
  • php做网站优点大学生创新创业大赛
  • 七牛搭建网站做百度推广效果怎么样
  • 郑州做网站优化最好的公司南昌seo推广
  • 深圳方维网络手机卡顿优化软件
  • 网站关闭申请书网络推广方式主要有