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

上海南山做网站seo查询 工具

上海南山做网站,seo查询 工具,好的做淘宝详情页的网站有哪些内容,网站开发运营公司目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷)》…

在这里插入图片描述

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、解题思路
    • 五、Java算法源码
    • 六、效果展示
      • 1、输入
      • 2、输出

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

给定一个数组nums,将元素分为若干个组,使得每组和相等,求出满足条件的所有分组中,组内元素和的最小值。

二、输入描述

第一行输入 m

接着输入m个数,表示此数组nums

数据范围:1<=m<=50, 1<=nums[i]<=50

三、输出描述

最小拆分数组和。

四、解题思路

虽然题意很简单,看着很简单,其实这道题是有点难度的,100分你能抽到这道题,自求多福吧,兄弟。

比如:

4 3 2 3 5 2 1

可以组合成

4 1
3 2
3 2
5

解题思路:

1、答案一定在最大值与所有数的和之间,拿到这个值看是否能够满足条件;

2、用深度优先搜索,搜索一种方法满足子数组合能够满足target值的解;

3、每次从上一次找的数后面的数开始递归,这个优化非常重要,不加的话会把之前的结果再找一遍,例如,我本次递归取了第2个数,然后下面再取第5个数,当我下次递归取了第5个数的时候,如果不从第5个数之后来选,就会搜到上面一样取到第二个数,那里的结果我们之前是已经搜索过了的。

五、Java算法源码

package com.guor.od;import java.util.Scanner;
import java.util.*;public class OdTest05 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int m = Integer.valueOf(sc.nextLine());int[] nums = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();Arrays.sort(nums);// 求和int sum = 0;for (int i = 0; i < nums.length; i++) {sum += nums[i];}// 答案一定在最大值与所有数的和之间,拿到这个值看是否能够满足条件for (int ans = nums[nums.length - 1]; ans <= sum; ans++) {if (dfs(ans, 0, nums, new HashSet<>(), 0)) {System.out.println(ans);break;}}}/*** 用深度优先搜索,搜索一种方法满足子数组合能够满足target值的解** @param target   目标值* @param nowValue 当前递归中的数组和* @param nums     数组* @param useIndex 数组中已经使用过的数的下标* @param nowIndex 上一个取的数下标,用于搜索剪枝* @return 是否找到了答案*/public static boolean dfs(int target, int nowValue, int[] nums, Set<Integer> useIndex, int nowIndex) {if (useIndex.size() == nums.length && nowValue == 0) {//只有当数组中的值已经用完,且没有剩下数的时候,说明答案已经找到了return true;}//每次从上一次找的数后面的数开始递归,这个优化非常重要,不加的话会把之前的结果再找一遍,//例如,我本次递归取了第2个数,然后下面再取第5个数,//当我下次递归取了第5个数的时候,如果不从第5个数之后来选,就会搜到上面一样取到第二个数,那里的结果我们之前是已经搜索过了的for (int i = nowIndex; i < nums.length; i++) {if (useIndex.contains(i)) {//表示这个数已经被用过了continue;}//只有当当前取的数 + 当前的和小于目标值时才可以取if (nowValue + nums[i] <= target) {//标记这个数已经用过了useIndex.add(i);if (nowValue + nums[i] == target) {//当前的和已经等于目标值,这个时候我们要从头来找一个没有用过的数来继续搜索if (dfs(target, 0, nums, useIndex, 0)) {return true;}} else {//当前的和小于目标值,我们还得继续找数来继续填充我们的和if (dfs(target, nowValue + nums[i], nums, useIndex, i)) {return true;}}useIndex.remove(i);}}return false;}
}

六、效果展示

1、输入

4 6 5 5 8 2 3 3 3 1

2、输出

8
在这里插入图片描述


🏆下一篇:华为OD机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分)

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

http://www.mnyf.cn/news/43255.html

相关文章:

  • 深圳设计网站有限公司百度网站检测
  • 深圳网站建设有限公司qq群推广网站
  • 如何查询网站备案进度怎么注册域名网址
  • 北京 网站建设6002023全民核酸又开始了
  • 企业网站建设公司电话成都餐饮培训
  • 先做网站还是先申请域名如何做好一个网站
  • 在网上做效果图赚钱的网站网络优化需要哪些知识
  • 下沙做网站武汉seo楚天
  • 珠宝网站建设要以商为本磁力下载
  • 东莞东坑网站设计西地那非片多少钱一盒
  • drupal做的网站怎么在百度上做广告推广
  • 网站开发界面图标设计seo的基本步骤顺序正确的是
  • 自己电脑如何做网站服务器360推广和百度推广哪个好
  • it运维需要具备哪些能力seo推广哪家服务好
  • 买过域名之前就可以做网站了吗网站建站
  • 建设网站需要注意事项app优化方案
  • 北京哪家网站建设公司好抖音seo排名
  • 宁波外贸网站关键词歌曲歌词
  • 云主机网站源码湘潭网络推广
  • 哪个网站做网站好app推广公司
  • 智能小程序开发平台宁波seo关键词优化报价
  • 前端做企业网站百度注册公司网站
  • wordpress怎么清除缓存谷歌seo快速排名优化方法
  • 杭州手机网站建设公司广告推广公司
  • 网站开发工程师介绍广告资源发布平台
  • 怎么做资源网站个人接外包的网站
  • 网站中 点击出现登录框怎么做app推广员怎么做
  • 深圳开发的购物网站广点通推广登录入口
  • 目录网站模板北京十大教育培训机构排名
  • 苏州网络推广公司永阳北京官网seo