首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
2025-12-31 17:28
门头沟学院 机械结构工程师
2026届机械秋招投递记录67-寄/放弃/无后续
麦克维尔空调1-结构工程师-深圳 1-9.15投递中国中车1-机械工程师-广州 1-9.17投递-9.18测评博瑞电力1-工艺工程师(技术)-常州 1-9.20投递绿源1-车架开发工程师(工程中心)-金华 1-9.20投递昂科技术1-机械设计工程师-深圳 1-9.22投递广州地铁1-机电技术-广州 放弃 1-9.22投递-9.22测评-11.20面试奥特维1-机械工程师-无锡 1-9.22投递SGS1-质优生-广州 放弃 1-10.6投递-10.7AI面试麦科田医疗1-机械工程师-深圳 1-10.6投递纳睿雷达1-机械工程师-珠海 1-10.6投递辰卓1-结构工程师-深圳 放弃 1-10.15...
2026届机械秋招投递记...
点赞
评论
收藏
分享
2025-12-31 22:36
腾讯_WXG_客户端开发(准入职员工)
双非本2025秋招总结:65w+SSP三选一,最终还是“有鹅选鹅”|附面试心路历程
先上核心结果,省得大家翻:✅ 面试情况:投递数十家,仅8家给到面试机会✅ Offer清单:腾讯(转正)、字节跳动、小红书、蔚来、大疆、影石、小米❌ 泡池/排序挂:米哈游、京东❌ 简历挂:美团、快手、拼多多等N家(懂的都懂,秋招简历关是真地狱)先聊聊两个印象最深的“泡池挂”经历吧:米哈游三面基本全程聊天模式,面试官还给了超久的反问时间,当时聊得特别舒服,以为稳了,结果泡了三周池子后还是挂了,大概率是学历卡壳了,有点可惜但也能接受;京东二面被追问了大量C++问题,这不是我的主力语言,很多问题没答好,之后泡了一周池子也挂了,算是意料之中的遗憾。决赛圈&薪资:腾讯、字节、小红书三选一三家给的都...
少糖去冰的小师弟很沉...:
这就是客户端吗
offer决赛圈,我是怎...
点赞
评论
收藏
分享
2025-11-21 22:40
已编辑
长沙理工大学 Java
秋招的第一份offer,是妈妈给的!
【秋招面试录用通知】亲爱的宝贝:恭喜你!经过家庭管理层慎重且愉快的讨论,我们一致认为,你就是“温暖老家集团”一直在寻找的宝贵人才。现正式聘任你担任“全职开心小宝贝”一职。岗位职责:主要负责保持心情愉悦,做让自己开心的事。偶尔协助完成“品尝妈妈新菜式”、“分享生活趣闻”等辅助性工作。薪酬福利:月度基本薪资:快乐基金5000元(用于购置一切能让你嘴角上扬的小物件)。给你外卖一份香软可口的小蛋糕,想吃随时兑现。附赠7x24小时全天候拥抱服务与无条件精神支持。我们知道,外面的世界有时会刮风下雨,但请记住,家永远是你的晴天补给站。这份工作没有KPI,无需绩效考核,你唯一的任务就是健康、快乐。请凭此通知,随时到妈妈这里来报到并领取你的第一份甜蜜小蛋糕!永远爱你的妈妈!
鑫鑫向栄:
爱你,妈咪
点赞
评论
收藏
分享
2025-12-22 16:53
大连理工大学 产品总监
在mentor视角谈谈实习生摸鱼
实习生只要表情正常盯着电脑屏幕,别成天嬉皮笑脸的,也别瘫在椅子上玩手机摸鱼,我一般都懒得管。为啥?你要是摸鱼摸得太过分,我的领导就得找我麻烦了!除此之外随便造,想摸就摸呗…… 大家都是普通人,往后还有一辈子的班要熬呢,急啥。
王海:
不算mentor但也带过几个实习生,直接观感就是你可以摸鱼可以想早下班,分给你的工作好好完成就行
实习没事做是福还是祸?
点赞
评论
收藏
分享
01-04 19:00
搜狐畅游_游戏策划工程师(准入职员工)
图拉斯内推,图拉斯内推码
面经:蓝禾的流程推得很快,基本上投完两天就接到了hr的初试电话,直接进行了初试。初试全程大概三十分钟,hr小哥态度很和善。主要问了实践经历获奖的情况最有成就感的事情对电商运营的理解选择公司的标准等,都是比较常规的问题。图拉斯2026届校招启动,今年HC翻倍,抓紧投递~【我们是】图拉斯(原蓝禾) 是一家集产品、设计、研发、品牌、营销和大数据运营于一体的创新型科技公司,总部位于中国深圳,全球员工规模超3000人。【base】深圳【岗位】运营(国内)、运营(国外)、营销、设计、研发技术、职能内推链接:https://lanhevip.jobs.feishu.cn/s/gAwh1MlZJsw内推码:H...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
🔥2026创作新起点:《新年启航计划》来袭,三大赛道等你来冲!
2.0W
2
...
一大波手撕正在靠近!
1.5W
3
...
百度java一面 28届的第一次大厂面试 感觉g了
6436
4
...
拥抱人机共生,锻造不可替代的“金头脑”
4183
5
...
27前端鼠鼠快手二面
3696
6
...
腾讯游戏后端一面
3539
7
...
双非老鼠的悲惨秋招
3199
8
...
面试手撕题总结
3000
9
...
急急急,offer帮选🙏
2989
10
...
测开劝退
2642
创作者周榜
更多
正在热议
更多
#
有深度的简历长什么样?
#
6792次浏览
138人参与
#
哪些公司在招寒假实习?
#
2392次浏览
33人参与
#
去年的flag与今年的小目标
#
2661次浏览
75人参与
#
卷__卷不过你们,只能卷__了
#
1843次浏览
37人参与
#
26年哪些行业会变好/更差
#
3455次浏览
63人参与
#
你都用AI做什么
#
2653次浏览
69人参与
#
实习学到最有价值的工作习惯
#
54093次浏览
433人参与
#
写论文的崩溃时刻
#
1644次浏览
43人参与
#
实习,不懂就问
#
146624次浏览
1304人参与
#
一人分享一道面试手撕题
#
9369次浏览
482人参与
#
入职第一天
#
4577次浏览
58人参与
#
你不能接受的企业文化有哪些
#
3212次浏览
61人参与
#
AI了,我在打一种很新的工
#
125649次浏览
1304人参与
#
应届生应该先就业还是先择业
#
161202次浏览
813人参与
#
听到哪句话就代表面试稳了or挂了?
#
240650次浏览
1681人参与
#
考研人,我有话说
#
159505次浏览
1225人参与
#
秋招你被哪家公司挂了?
#
1000831次浏览
7696人参与
#
你的国庆怎么过
#
109472次浏览
764人参与
#
应届生第一份工作最好去大厂吗?
#
124173次浏览
1102人参与
#
面试之前应该如何准备?
#
209056次浏览
2306人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务