首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
小乌
2016-08-02 23:06
电子科技大学 Java
关注
已关注
取消关注
网易笔试Android编程题第三题最大乘积
大家的思路是什么啊,我当时想的是dp,后来发现不适合有负数的,或者我不知道怎么适用于负数
提示
全部评论
推荐
最新
楼层
wj_杭
杭州电子科技大学 算法工程师
有大神共享答案了,穷举法做的: http://blog.csdn.net/siphiababy/article/details/52116246 大神没有加注释,我自己加了注释,希望有用: import java.util.ArrayList; import java.util.List; /** * 用穷举法,列出了所有可能性 * 原理如下: * 比如从左到右总共有20个值(编号1,2,3,...,20),而其中按顺序被选中的只有5个,不考虑别的条件,也就是说,此时要把选中的5个的所有可能心都列出来 * 初始为前五个(1,2,3,4,5),也就是说,最后最大的5个选择只有(16,17,18,19,20) * 所以之后会有: * 1,2,3,4,6 1,2,3,4,7 1,2,3,4,8 ... 1,2,3,4,20(只有最后一个数字变化) * 1,2,3,5,6 1,2,3,5,7 1,2,3,5,8 ... 1,2,3,5,20 * 1,2,3,6,7 1,2,3,6,8 1,2,3,6,9 ... 1,2,3,6,20 * ... * 1,2,4,5,6 1,2,4,5,7 1,2,4,5,8 ... 1,2,4,5,20 * ... * 根据规律即可写出相应的代码来列举出所有可能 * 可以看出,每行的每个值都只有最后一个数字在变化,所以每行可以看成是一个集合ai;总共的列数又是一个集合A * * 之后根据每行结果中,相邻之间的差d,将不满足要求的ai给remove掉,剩余的集合A就是满足条件的所有情况 * 然后根据A中每个集合元素中的编号,求出最终的最大乘积 */ public class Test_4 { /** * * @param n 总数 * @param k 按顺序选中的人数 * @param d 编号相邻之间的最大差 * @param a n个人,每人的能力值 * @return */ static int com(int n, int k, int d, int[] a) { if (n < k || n <= 0 || k <= 0) { System.out.println("n,k数据输入不合理"); return 0; } //为方便计算,数组坐标从1开始,0不考虑 int[] b = new int[k + 1]; //用来临时存储按先后顺序的k个编号,此时先不考虑编号间的差d int[] fg = new int[k + 1]; //整个数组a中,最大的一种编号顺序,当然是a的最后k个连续的编号 for (int i = 1; i <= k; i++) { b[i] = i; //初始化时候,第一种最小的情况,就是前k个编号 fg[i] = i - k + n; //最大的情况,最后k个编号 } //(具体看原理解释)泛型为集合,是因为根据前面原理描述的,每行存储多种情况,只有最后一个数字变化。列和列之间,也只有一个数字在变化 List<List<Integer>> comList = new ArrayList<>(); while (true) { List<Integer> comp = new ArrayList<Integer>(); for (int i = 1; i <= k; i++) comp.add(b[i]); //把规律计算出的可能性存入当前一行的集合 ,行(具体看原理解释) comList.add(comp); //放入整个外层集合,列(具体看原理解释) if (b[1] == n - k + 1) //当列完了最后一种最大的情况(就是数组的随后k个编号),则退出循环 break; /** * 此循环的简单解释 * 每种可能中,都从最后一个编号开始计算每种可能性, * 最后一种全都列举完,那就从倒数第二种开始再列每种可能性,此时要考虑的是最后2个编号的变化,依次3个编号的变化。。。 * 最好看最前面原理中示例的演示 */ for (int i = k; i >= 1; i--) { //每次用当前的编号顺序和最大的比 if (b[i] < fg[i]) { b[i]++; //编号顺序的最后一个依次往后递增 for (int j = i + 1; j <= k; j++) //此过程需要根据原理中列举的示例来演示,不好描述 b[j] = b[j - 1] + 1; //后一个起始永远都是前一个加一 break; } } } //从此时开始考虑编号间隔不大于d for (int i = 0; i < comList.size(); i++) { //剔除所有情况中,不满足间隔不大于d的所有情况 List<Integer> cc = comList.get(i); for (int j = 1; j < cc.size(); j++) { if (cc.get(j) - cc.get(j - 1) > d) { //发现有超过d的就移除,移除后,当前cc为空,需要跳出当前内部循环 comList.remove(i); //移除后,外层集合少去一个,顺序发生变化,所以要i=i-1 i = i - 1; break; } } } /** * 下方不需要再具体解释了,一目了然 */ int max = 0; for (int i = 0; i < comList.size(); i++) { int j = 0; int product = 1; while (j < k) { //comList中存储的是每种满足条件的编号序列,可以对应到数组a中取出相应的值 //最初计算编号是按1开始的,所以下方需要-1 product = product * a[comList.get(i).get(j) - 1]; j++; } if (product > max) max = product; } return max; } public static void main(String[] args) { int[] i = {5,10,56,-30,-15,-25,-40,26,15,10}; //测试数据 System.out.println(com(10, 3, 3, i)); } }
点赞
回复
分享
发布于 2016-08-05 02:41
324234
快手_Android研发工程师
咦。 那这样子就是穷举法对吧?
点赞
回复
分享
发布于 2016-08-03 09:48
牛客722894号
C++
记录当前的最大最小,但是最后才发现这个题的数据非常大,还需要用大数么?。。
点赞
回复
分享
发布于 2016-08-03 09:31
forgot93
杭州电子科技大学 Java
每次DP 记录最大最小。 注意合理初始化就行了
点赞
回复
分享
发布于 2016-08-02 23:20
〝No_Body〞
武汉大学 算法工程师
Leetcode原题 我记得
点赞
回复
分享
发布于 2016-08-02 23:16
schizophrenia
中国科学院大学 C++
最大最小一起搞?
点赞
回复
分享
发布于 2016-08-02 23:10
暂无评论,快来抢首评~
相关推荐
11-12 09:57
新国都_Java研发工程师(准入职员工)
图拉斯内推,图拉斯内推码
ai面总结:AI调教的很好,问的问题很有意思,整场面试不会有很大的压迫感,追问大多是根据你的回答提问。总时长:35分钟Q1:自我介绍,重点介绍一下个人背景和大学期间的主要经历。Q2:你对于在一家公司长期发展有什么看法?你认为哪几点因素会让你在一家公司长期工作?(有追问)Q3:你取得过的最大成就是什么?过程中最大的难点是什么?你是如何突破的?最终的结果怎么样?(有追问2个)Q4:请描述一个过往遇到的最有压力困难或最具挑战的一个场景,你是如何解决的?对你有什么影响?(有追问)Q5:依你的看法,请描述一个你近期完成的项目任务,如果重来一次,你会做哪些不同的事情来提升结果?(有追问2个)Q6:电商运营...
点赞
评论
收藏
分享
11-14 10:41
沐瞳科技_游戏策划(准入职员工)
沐瞳科技内推,沐瞳科技内推码
游戏运营问题:看你以往经历没有涉及游戏,为什么想进入这行?深挖活动运营经历:评估效果会关注哪些指标?新游戏上线后,你会优先关注哪些数据?如果游戏下载量、留存、回流同时出问题,先解决哪个?平时玩什么游戏?为什么喜欢它?(建议提前准备游戏分析)你觉得《MLBB》有哪些可以改进的地方?📚 高频考点整理▪️ 游戏运营理解:内容搭建、版本迭代、用户/渠道运营、数据分析缺一不可。▪️ 数据指标:留存率、ARPU、付费率、活跃玩家分析是核心。▪️ 新手引导设计:简洁提示+适当奖励+难度梯度是关键。▪️ 活动策划:节日活动、社区互动、召回机制都能提升在线人数。🔍 行业工具推荐数据分析常用:七麦、蝉大师、S...
点赞
评论
收藏
分享
10-20 11:22
南京大学 行政专员/助理
招到连体人是这样的
难绷
轻絵梨花泪沾衣:
南泵,大少爷驾到通通闪开
点赞
评论
收藏
分享
11-01 11:43
福建理工大学 Java
27双非投递日常情况
个人情况:双非本、hot100二刷基本完成、一段小厂实习、八股掌握还行、工程场景题完全不行目前投递半个月:仅1约面(且低代码)也有考虑转其他方向比如测开,但还是想走开发,有点被现实打破防了开始胡思乱想了。秋招也只想进云智(离家近)没有较高要求。也不知道是不是我的简历问题,已附下面,佬们麻烦可以帮我看看
Govai苦艾酒:
目前百度OC了
投递大连飞创信息技术有限公司等公司10个岗位
点赞
评论
收藏
分享
11-12 22:50
门头沟学院 Java
JavaBoy们不知道AI项目学什么?来看看智能问数
前言首先要明确一个概念,市面上招聘的AI开发工程师、大模型应用开发工程师、大模型集成工程师,基本上跟底层大模型训练没啥关系,都是基于大模型做一些落地项目。大部分同学对AI项目开发都是一片茫然,仅仅只是听到各大厂商在不断迭代自己的模型能力,仿佛大模型只能做个聊天工具。市面上真正结合AI并有业务价值的项目少之又少,大部分都是些简单的RAG项目等等。其实对于大部分程序员而言,向AI方向靠拢肯定是一个正确的规划。AI的能力发展到现在主要的落地方向有很多,但能让JavaBoy接触到的也不多,根据当下最流行的项目。总结下来大体可以分成这几类:1、智能助手 & 智能客服,这类项目入门最简单,含金量也...
我的失利项目复盘
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
java零基础斩获4大厂offer
1.2W
2
...
《办公室恋情,被我抓住了》
2838
3
...
【Offer帮选】专家大佬在线接单!发帖即享免费1V1抉择指导
2731
4
...
叹为观止!浪潮员工举报领导被当天开除
2624
5
...
进大厂是因为老家找不到工作
2409
6
...
我父母让我忍受所有工作上的欺辱
2328
7
...
快手员工自费给+2庆生?太带派了烙铁
1911
8
...
wxg和字节flow咋选
1778
9
...
月薪多少才能过上"体面生活"
1631
10
...
百度前端日常oc!!!
1624
创作者周榜
更多
正在热议
更多
#
职场中那些令人叹为观止的八卦
#
7490次浏览
102人参与
#
秋招吐槽大会
#
35723次浏览
325人参与
#
小红书开奖了
#
12359次浏览
85人参与
#
我的职场社死时刻
#
7021次浏览
84人参与
#
你找工作想离家近 or 离家远?
#
5945次浏览
93人参与
#
月薪多少能在一线城市生存
#
90671次浏览
616人参与
#
腾讯音乐秋招
#
421042次浏览
4735人参与
#
那些年,我收到的‘奇葩’回复
#
3930次浏览
44人参与
#
哪些公司开始补录了
#
6226次浏览
97人参与
#
你秋招最后悔的选择
#
6258次浏览
57人参与
#
秋招你经历过哪些无语的事
#
4365次浏览
54人参与
#
XX请雇我工作
#
5453次浏览
65人参与
#
职场中对你有帮助的书
#
22984次浏览
213人参与
#
中科曙光工作体验
#
4884次浏览
23人参与
#
如何拒绝/反向PUA
#
82082次浏览
367人参与
#
交通银行工作体验
#
20603次浏览
69人参与
#
你父母给过你哪些不靠谱的职场建议?
#
6582次浏览
89人参与
#
假如你的老板掉河里,你的工作能为他做什么
#
39402次浏览
401人参与
#
虾皮开奖
#
50310次浏览
244人参与
#
京东工作体验
#
21609次浏览
121人参与
#
你觉得机械有必要实习吗
#
66366次浏览
481人参与
#
你最满意的offer薪资是哪家公司?
#
51845次浏览
263人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务