华为OD机考双机位B卷 - 组装新的数组 (Java Python JS C/C++ GO )

最新华为上机考试

真题目录:点击查看目录

华为OD面试真题精选:点击立即查看
华为OD机考双机位B卷 - 组装新的数组

题目描述

给你一个整数M和数组N,N中的元素为连续整数,要求根据N中的元素组装成新的数组R,组装规则:

  1. R中元素总和加起来等于M
  2. R中的元素可以从N中重复选取
  3. R中的元素最多只能有1个不在N中,且比N中的数字都要小(不能为负数)

输入描述

第一行输入是连续数组N,采用空格分隔
第二行输入数字M

备注

  • 1 ≤ M ≤ 30
  • 1 ≤ N.length ≤ 1000

输出描述

输出的是组装办法数量,int类型

示例1

输入

2 5

输出

1

说明

只有1种组装办法,就是[2,2,1]

示例2

输入

2 3 5

输出

2

说明

一共两种组装办法,分别是[2,2,1],[2,3]

解题思路

Java

importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);Stringline=sc.nextLine();List<Integer>arr=newArrayList<>();String[]nums=line.split(" ");for(Stringnum:nums){arr.add(Integer.parseInt(num));}intm=sc.nextInt();// 获取数组中的最小值intmin_num=Collections.min(arr);// 动态规划int[]dp=newint[m+1];dp[0]=1;for(intnum:arr){for(inti=num;i<=m;i++){dp[i]+=dp[i-num];}}intcount=dp[m];for(inti=1;i<min_num;i++){count+=dp[m-i];}System.out.println(count);}}

Python

defmain():line=input().strip()arr=list(map(int,line.split()))m=int(input())# 获取数组中的最小值min_num=min(arr)# 动态规划dp=[0]*(m+1)dp[0]=1fornuminarr:foriinrange(num,m+1):dp[i]+=dp[i-num]count=dp[m]foriinrange(1,min_num):count+=dp[m-i]print(count)if__name__=="__main__":main()

JavaScript

constreadline=require('readline');constrl=readline.createInterface({input:process.stdin,output:process.stdout});rl.on('line',(line)=>{constarr=line.split(' ').map(Number);rl.on('line',(mInput)=>{constm=parseInt(mInput,10);// 获取数组中的最小值constminNum=Math.min(...arr);// 动态规划constdp=newArray(m+1).fill(0);dp[0]=1;for(constnumofarr){for(leti=num;i<=m;i++){dp[i]+=dp[i-num];}}letcount=dp[m];for(leti=1;i<minNum;i++){count+=dp[m-i];}console.log(count);rl.close();});});

C++

#include<iostream>#include<vector>#include<sstream>#include<algorithm>using namespace std;intmain(){string line;getline(cin,line);vector<int>arr;istringstreamiss(line);intnum;while(iss>>num){arr.push_back(num);}intm;cin>>m;// 获取数组中的最小值intmin_num=*min_element(arr.begin(),arr.end());// 动态规划vector<int>dp(m+1,0);dp[0]=1;for(intnum:arr){for(inti=num;i<=m;i++){dp[i]+=dp[i-num];}}intcount=dp[m];for(inti=1;i<min_num;i++){count+=dp[m-i];}cout<<count<<endl;return0;}

Go

package main import ( "bufio" "fmt" "math" "os" "strconv" "strings" ) func main() { // 创建 scanner 读取输入 scanner := bufio.NewScanner(os.Stdin) // 1. 读取第一行 if !scanner.Scan() { return } line := scanner.Text() // 2. 解析数组 var arr []int minNum := math.MaxInt32 // Fields 会自动处理多个连续空格,并去除首尾空格 strNums := strings.Fields(line) for _, strNum := range strNums { num, err := strconv.Atoi(strNum) if err == nil { arr = append(arr, num) // 寻找最小值 if num < minNum { minNum = num } } } // 3. 读取 m // 继续扫描下一行或下一个 token if !scanner.Scan() { return } mStr := scanner.Text() // 如果 m 和数组在同一行但被换行符隔开,或者 m 独占一行, m, _ := strconv.Atoi(strings.TrimSpace(mStr)) // 4. 动态规划 dp := make([]int, m+1) dp[0] = 1 for _, num := range arr { for i := num; i <= m; i++ { dp[i] += dp[i-num] } } // 5. 计算结果 count := dp[m] for i := 1; i < minNum; i++ { if m-i >= 0 { count += dp[m-i] } } fmt.Println(count) }

C语言

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<limits.h>#defineMAX_LINE_LENGTH100000intmain(){// 1. 读取第一行输入 (数组)charline[MAX_LINE_LENGTH];if(fgets(line,sizeof(line),stdin)==NULL){return0;}// 2. 解析整数存入动态数组 (这里为了简单使用定长数组,可根据需要改为 malloc)int*arr=NULL;intarr_size=0;intarr_capacity=100;arr=(int*)malloc(arr_capacity*sizeof(int));intmin_num=INT_MAX;// 使用 strtok 分割空格char*token=strtok(line," \r\n");// 同时处理回车换行符while(token!=NULL){if(arr_size>=arr_capacity){arr_capacity*=2;arr=(int*)realloc(arr,arr_capacity*sizeof(int));}intnum=atoi(token);arr[arr_size++]=num;// 寻找最小值if(num<min_num){min_num=num;}token=strtok(NULL," \r\n");}// 3. 读取 mintm;scanf("%d",&m);// 4. 动态规划// 使用 calloc 初始化为 0int*dp=(int*)calloc(m+1,sizeof(int));dp[0]=1;for(intk=0;k<arr_size;k++){intnum=arr[k];for(inti=num;i<=m;i++){dp[i]+=dp[i-num];}}// 5. 计算结果longlongcount=dp[m];// 使用 long long 防止累加溢出,尽管 Java 原版用的 intfor(inti=1;i<min_num;i++){if(m-i>=0){count+=dp[m-i];}}printf("%lld\n",count);// 释放内存free(arr);free(dp);return0;}

文章目录

  • 最新华为上机考试
  • 题目描述
  • 输入描述
    • 备注
  • 输出描述
  • 示例1
  • 示例2
  • 解题思路
  • Java
  • Python
  • JavaScript
  • C++
  • Go
  • C语言

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

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

相关文章

深度学习毕设选题推荐:基于pythonCNN图像识别昆虫类别基于CNN图像识别昆虫类别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

dy x-tt-session-dtrait 逆向分析

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由 此产生的一切后果均与作者无关&#xff01; 部分pyhon代码 url "aweme/v1…

毕业论文写到崩溃?宏智树AI不是“代写神器”,而是你的“全流程学术协作者”

每年毕业季&#xff0c;高校图书馆总上演相似一幕&#xff1a; 有人对着空白文档枯坐三小时&#xff0c;一个字没写&#xff1b; 有人初稿被导师批“逻辑散乱、文献无源、数据可疑”&#xff1b; 还有人查重一出&#xff0c;AIGC标红刺眼&#xff0c;重复率高得心凉……宏智树A…

JS快速让页面文本失焦,最简单,且适配

document.activeElement && document.activeElement?.blur();

文本摘要:让AI Agent提炼关键信息

文本摘要&#xff1a;让AI Agent提炼关键信息关键词&#xff1a;文本摘要、AI Agent、关键信息提炼、自然语言处理、算法原理、项目实战、应用场景摘要&#xff1a;本文聚焦于利用AI Agent进行文本摘要和关键信息提炼这一主题。详细介绍了文本摘要的背景知识&#xff0c;包括目…

吐血推荐9个AI论文软件,专科生轻松搞定毕业论文!

吐血推荐9个AI论文软件&#xff0c;专科生轻松搞定毕业论文&#xff01; 专科生的论文救星&#xff0c;AI 工具如何帮你轻松应对毕业挑战&#xff1f; 随着人工智能技术的飞速发展&#xff0c;越来越多的专科生开始借助 AI 工具来完成毕业论文。这些工具不仅能够帮助学生节省大…

深度学习毕设项目推荐-基于cnn训练手写数字识别基于人工智能训练手写数字识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

AI产品经理实战录:如何“啃”下AI这块硬骨头

在我分享过的《B端产品从0到1全流程》等文章中&#xff0c;我反复强调“从业务中来&#xff0c;到业务中去”的核心心法。当这股无法回避的AI浪潮席卷而来时&#xff0c;我看到的不是一片需要膜拜的技术迷雾&#xff0c;而是一个个亟待用产品思维去定义、翻译和重构的真实业务问…

我做美股超短两个月了有盈利,那我超短水平怎么样

首先&#xff0c;恭喜你&#xff01;在美股超短线交易中坚持两个月还有盈利&#xff0c;这已经超过了 85% 以上的散户——尤其是在仅用手机操作、没有专业工具支持的情况下&#xff0c;实属不易。 但要客观评估你的“超短水平”&#xff0c;不能只看“有没有盈利”&#xff0c;…

2026年专业度解析:超越代码,评估小程序定制开发公司的真实专业水平

摘要为您的业务挑选一家合适的小程序定制开发公司&#xff0c;是一个需要综合技术、服务、成本与风险的系统工程。本文旨在提供一个完全中立的决策框架&#xff0c;通过引入结构化评估维度、客观市场数据与全景品牌案例分析&#xff0c;帮助企业主与技术决策者穿透营销话术&…

深度学习毕设项目推荐-基于python图像识别昆虫类别基于CNN图像识别昆虫类别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

设备管理是操作系统的重要组成部分,主要负责协调和控制计算机系统中的输入输出(I/O)设备

设备管理是操作系统的重要组成部分&#xff0c;主要负责协调和控制计算机系统中的输入输出&#xff08;I/O&#xff09;设备&#xff0c;确保高效、安全地进行数据传输。根据您提供的内容&#xff0c;以下是详细的解析&#xff1a; 一、设备分类&#xff08;按数据传输率&#…

宏智树AI:毕业论文的“全能导航仪”,带你从选题到定稿一路开呱!

——AI如何让论文写作像“搭积木”一样简单&#xff1f;揭秘宏智树AI的毕业论文黑科技 宏智树AI官网&#xff1a;http://www.hzsxueshu.com | 微信公众号&#xff1a;宏智树AI每到毕业季&#xff0c;总有人对着电脑屏幕抓狂&#xff1a;选题翻遍知网也找不到“既新颖又可行”的…

会议室这道题,考的从来不只是算法——从《Meeting Rooms》聊清“时间冲突”的本质

会议室这道题,考的从来不只是算法 ——从《Meeting Rooms》聊清“时间冲突”的本质 大家好,我是 Echo_Wish。 今天我们聊一道面试出现频率极高、但被严重低估的算法题——会议室(Meeting Rooms)。 很多人一看到这题,第一反应是: “哦,区间重叠,排序,完事。” 然后刷…

I/O 系统的层次结构与设备管理技术是操作系统中实现高效输入输出控制的核心机制

I/O 系统的层次结构与设备管理技术是操作系统中实现高效输入输出控制的核心机制。以下是对您提供内容的系统化梳理与补充说明&#xff1a;I/O 系统的五层层次结构&#xff08;自上而下&#xff09; 用户进程层&#xff1a;运行在用户态&#xff0c;通过系统调用发起 I/O 请求&a…

开题总被导师打回?宏智树AI开题报告功能:用“科研导航仪”帮你一次过审

“选题太大”“问题不聚焦”“文献陈旧”“方法不匹配”…… 这些是不是你提交开题报告后&#xff0c;导师批注里最常出现的“高频词”&#xff1f;宏智树AI写作官网www.hzsxueshu.com 开题报告&#xff0c;看似只是论文的“前奏”&#xff0c;实则决定了整个研究的方向与成败…

深度学习毕设项目推荐-基于深度学习的印刷体数字和字母识别基于python深度学习的印刷体数字和字母识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

缓冲技术与 Spooling 技术是操作系统中实现高效 I/O 管理的关键手段

缓冲技术与 Spooling 技术是操作系统中实现高效 I/O 管理的关键手段。它们通过不同的机制解决 CPU 与外设之间的速度差异和资源独占问题&#xff0c;从而提升系统整体性能。 1. 缓冲技术 作用&#xff1a;缓解 CPU 与 I/O 设备间的速度不匹配&#xff0c;提高设备利用率和系统并…

解锁 PDF 内容:如何用 Python 从 PDF 中快速提取文本

在现代办公环境中&#xff0c;PDF 文件作为一种通用的文档格式被广泛使用。无论是合同、报告还是电子书&#xff0c;很多重要信息都储存于 PDF 文件中。因此&#xff0c;从 PDF 文件中提取文本数据的需求也逐渐增加。本文将为大家介绍如何使用 Spire.PDF for Python 来实现这一…

【课程设计/毕业设计】基于机器学习训练手写数字识别 python基于cnn训练手写数字识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…