1.要求

工厂里有一批不同长度的木材(不考虑单位,且长度都是整数),此时客户需要定制一个总长度为整数M的木材。我们唯一能做的就是,把工厂这批木材底部对齐,然后取一个长度整数N,整体切割,将所有长度超过N的木材截成N,使得这批木材全部接在一起的总长度S最接近M(S减去M的绝对值最小)。

现给出一个整数数组,代表每根木材的长度,以及客户定制的长度M,求N(必须用上所有木材)(若有多个结果满足,返回最小的值)。

1.1示例

示例 1:
输入:A = [5,9,2], M = 11
输出:4
解释:当选择N为4时,数组会变成 [4, 4, 2],和为10;
当选择N为5时,数组会变成 [5, 5, 2],和为12;相同接近11的情况下,4更小。示例 2:输入:A= [2,4,6], M= 13
输出:6

2.问题分析

该题主要考察数组。
主要思路:
1)现有的木材为一个一维数组;
2)切割后的木材为一个二维数组;
3)木材切割后总长度为一个一维数组;
4)切割后木材总和与定制要求差值为一个一维数组。

3.代码实现

public class logTest {public static void main(String[] args) {int[] arr = new int[3];//现有木材int maxNum = 0;for (int i = 0; i < arr.length; i++) {System.out.print("请输入工厂现有木材长度:");Scanner scan = new Scanner(System.in);int num = scan.nextInt();arr[i] = num;if(num > maxNum){maxNum = num;}}System.out.print("请输入定制长度:");Scanner scan = new Scanner(System.in);int num2 = scan.nextInt();//定制长度int[][] arr2 = new int[maxNum + 1][3];//切断木材长度集合int[] sum = new int[maxNum + 1];//木材总和长度集合int[] min = new int[maxNum + 1];for (int i = 0; i <= maxNum; i++) {for (int j = 0; j < arr.length; j++) {if(arr[j] < i){arr2[i][j] = arr[j];}else{arr2[i][j] = i;}}}
//      //遍历
//      for (int i = 0; i < arr2.length; i++) {//          for (int j = 0; j < arr2[i].length; j++) {//              System.out.print(arr2[i][j] + " ");
//          }
//          System.out.println();
//      }for (int j = 0; j < sum.length; j++) {for (int j2 = 0; j2 < arr.length; j2++) {sum[j] += arr2[j][j2]; }}//遍历
//      for (int i = 0; i < sum.length; i++) {//          if(i == 0){//              System.out.print("[" + sum[i] + ",");
//          }else if (i == sum.length - 1){//              System.out.print(sum[sum.length - 1] + "]");
//          }else{//              System.out.print(sum[i] + ",");
//          }
//      }
//      System.out.println();for (int j = 0; j < sum.length; j++) {if (sum[j] == num2) {min[j] = 0;}else if (sum[j] < num2){min[j] = num2 - sum[j];}else{min[j] = sum[j] - num2;}}//遍历
//      for (int i = 0; i < min.length; i++) {//          if(i == 0){//              System.out.print("[" + min[i] + ",");
//          }else if (i == min.length - 1){//              System.out.print(min[min.length - 1] + "]");
//          }else{//              System.out.print(min[i] + ",");
//          }
//      }
//      System.out.println();int n = 0;int minNum = min[0];int indexMin = -1;for (int j1 = 0; j1 < min.length; j1++) {if (min[j1] < minNum) {minNum = min[j1];indexMin = j1;}}System.out.println("N = " + indexMin);}
}

4.实现截图

【算法面试题】工厂木材加工问题相关推荐

  1. 数据结构与算法面试题(2022版)

    序列号 内容 链接 1 Java基础知识面试题(2022版) https://blog.csdn.net/qq_43061290/article/details/124023797 2 Java集合容 ...

  2. [Z]谷歌(Google)算法面试题

    谷歌(Google)算法面试题 1.谷歌面试题:给定能随机生成整数 1 到 5 的函数,写出能随机生成整数 1 到 7 的函数. 回答:此题的关键是让生成的 1 到 7 的数出现概率相同. 只要我们可 ...

  3. 200 道算法面试题集锦!Python 实现,含华为、BAT 等校招真题!

    点击上方"AI有道",选择"置顶"公众号 重磅干货,第一时间送达 春招临近,无论是要找工作的准毕业生,还是身在职场想要提升自己的程序员,提升自己的算法内功心法. ...

  4. 常见的js算法面试题收集,es6实现

    1.js 统计一个字符串出现频率最高的字母/数字 let str = 'asdfghjklaqwertyuiopiaia'; const strChar = str => {let string ...

  5. twitter java_Twitter算法面试题详解(Java实现)

    最近在网上看到一道Twitter的算法面试题,网上已经有人给出了答案,不过可能有些人没太看明白(我也未验证是否正确),现在给出一个比较好理解的答案.先看一下题目. 图1 先看看图图1.可以将方块看做砖 ...

  6. prim算法_历时两月,终拿字节跳动offer,算法面试题分享「带答案」

    欢迎关注专栏<Java架构筑基>--专注于Java技术的研究与分享! Java架构筑基​zhuanlan.zhihu.com Java架构筑基--专注于Java技术的研究与分享! 后续文章 ...

  7. java面笔试_java笔试手写算法面试题大全含答案

    java笔试手写算法面试题大全含答案 1.统计一篇英文文章单词个数. public class WordCounting { public static void main(String[] args ...

  8. 【机器学习算法面试题】四.深度神经网络中激活函数有哪些?

    欢迎订阅本专栏:<机器学习算法面试题> 订阅地址:https://blog.csdn.net/m0_38068876/category_11810806.html [机器学习算法面试题]一 ...

  9. 66 道前端算法面试题附思路分析助你查漏补缺

    大家好,我是漫步. 今天来分享一篇干货,前端关于算法的分析不多,下文列举了66道前端算法面试题,希望对你有所帮助. 作者:Eno_Yao https://segmentfault.com/a/1190 ...

  10. 一周刷爆LeetCode,算法da神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解 笔记

    一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解 笔记 教程与代码地址 P1 出圈了!讲课之外我们来聊聊 ...

最新文章

  1. 数据民工,也能移动办公了:目标检测标注App上线Google Play,分分钟创建私人数据集...
  2. 诺依曼原理中计算机由运算器,冯诺依曼原理与计算机的基本组成
  3. google drive的压缩包直接解压到google drive
  4. [mybatis]sqlSessionFactory.openSession()
  5. 在互联网大环境下,IT编程以及网络营销,到底学哪个比较好就业?
  6. NHibernate 3.3
  7. 计算机负数次幂科学表示,负数的科学计数法怎么表示
  8. svm工具箱快速入手简易教程
  9. 南京大学计算机学类,南京大学计算机专业怎么样
  10. 数仓工具—Hive的数据组织管理方式(4)
  11. PAT Basic 1031
  12. python条件句格式_python条件语句是什么?条件语句的一般格式是什么样的?
  13. AJPFX平台:01.14日内交易策略
  14. 程序员干累了,当个培训讲师?我亲身试水,讲讲感受
  15. android studio中光线传感器解析
  16. 骑砍自建服务器,恶魔之魂玩家不忍服务器关闭 自建服务器上线运行
  17. Flip Image 2014 ( V4.0.2 ) 商业版试用版免费下载(含电子古籍、家谱制作功能)
  18. 在处理时有错误发生:google-chrome-stable/
  19. AES128加密算法与实现1
  20. 再见SpringMVC!java语言程序设计第三版答案郎波

热门文章

  1. 云安全技术有什么特点?云安全包含哪些方面?
  2. 国内几个使用Ruby开发的网站
  3. python编写程序输出诗句_python基于词向量的古诗生成器
  4. ott运营商的盈利模式
  5. 基于双边滤波的图像增强算法
  6. java main()方法必须都写在类里面
  7. WIN10英文改中文
  8. datetime instant 转_java8 Instant 时间及转换操作
  9. excel公式不执行。原因是设置问题:公式->计算选项->手动
  10. Android应用市场转移【2021-03-22】