首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
01-07 22:36
桂林电子科技大学 C++
莉莉丝游戏 golang服务器开发 实习面经
一面:客户端发起Http请求,到服务端接收Http请求,中间的整个流程 DNS和Ip的映射是如何获取的域名和Ip的映射表是如何获取的如何保证DNS查询返回的Ip不被劫持http和https的区别如何确保https证书的真实性客户端的请求是如何落到具体的pods上的(k8s)service如何获取到pods的IpHTTP/1.1和HTTP/2的区别什么是HTTP的多路复用,请求是并行还是串行int32和int64的20000,用protobuf传输时,实际传输的字节是否一致项目相关用户表数目过大时,怎么进行处理项目原先只支持用户名登录,后续需要增加更多的登录方式,如何实现服务器如何获取到用户真实...
发面经攒人品
点赞
评论
收藏
分享
01-05 14:39
TP-LINK_通信算法工程师(准入职员工)
歌尔股份内推,歌尔股份内推码
一面主管面全程没超过30分钟,主要问题如下:1.自我介绍2.GPA/排名/校内职务/四六级3.让我英文自我介绍,但我没准备,一时语塞4.自认为学的最好的一门课(会追问具体内容)5.实习项目方案从发现到落地的整个过程概述6.一些常规、简单的专业知识(大概问了5、6个点)7.简历中涉及到的量化数字来源8.沟通能力询问(举例说明)9.对base的看法10.家庭情况等歌尔股份26届歌尔之翼校园招聘全球启动【关于歌尔】歌尔2008年在深交所上市,是全球布局的科技创新型企业,主要从事声光电精密零组件及精密结构件、智能整机、高端装备的研发、制造和销售。连续多年获得中国电子元器件企业百强研发实力榜第一名。【正...
点赞
评论
收藏
分享
2025-12-14 11:43
黑龙江大学 Java
这个简历烂吗? 目前研二导师放实习
用微笑面对困难:
确实比较烂,可以这么修改:加上大学的qs排名,然后大学简介要写一些,然后硕士大学加大加粗,科研经历第一句话都写上在复旦大学时,主要负责xxxx,简历左上角把学校logo写上,建议用复旦大学的简历模板
点赞
评论
收藏
分享
2025-11-10 11:10
湖南大学 安卓
“您已拒绝向对方发送简历”
有些企业问了简历我就给,发了简历就被挂,秒挂……谁不想翻身做地主啊你问我要简历我就要给吗已读不回高冷且拒绝直接倒反天罡
不知道怎么取名字_:
你这是翻身做主把家还啊
简历无回复,你会继续海投...
点赞
评论
收藏
分享
01-06 12:09
科大讯飞_教育BG_后端开发(准入职员工)
2025年入职四家实习公司的第一天体验
2025 年,我成功入职了四家公司进入实习,每家公司第一天入职体验且听我娓娓道来。我入职的第一家公司是北京中企云链,入职第一天的体验,满是通勤的疲惫 —— 从学校到公司,单程就要坐两小时地铁。这家公司设有五天试用期,入职首日,我分配到电脑(Mac系统的,第一次接触,不熟悉),就被分配了一个企业级项目的任务:要求在这个项目的基础上,实现前后端分离的增删改查功能。可这个项目采用的是全新框架,再加上这是我的第一份实习,几乎没什么实战经验,我只能对着需求和代码一点点摸索。更让人手足无措的是,试用期里没有 mentor 指导,所有问题都得靠自己硬磕。好不容易熬到下班时间,却被告知要等同事们开完会,才能过...
京东公司氛围 301人发布
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
双非非科班2年时间的转码历程
2.0W
2
...
秋招50+场面试手撕算法汇总
6700
3
...
双非本秋招寄录
5901
4
...
批判“上岸即胜利”的炫耀
5107
5
...
简历挂麻了?因为你的简历只有“宽度”没有“深度”!
3905
6
...
入职第一天:允许自己像个新生
3637
7
...
26秋招小结 含面经碎碎念版
3494
8
...
Caffeine 面经汇总
3278
9
...
小鹏汽车二面(没绷住)
2968
10
...
2025年牛客年度作者礼盒开箱(礼盒部分)
2278
创作者周榜
更多
正在热议
更多
#
哪些公司在招寒假实习?
#
9598次浏览
106人参与
#
你怎么看待AI面试
#
132836次浏览
739人参与
#
MiniMax求职进展汇总
#
522次浏览
19人参与
#
26年哪些行业会变好/更差
#
15408次浏览
215人参与
#
卷__卷不过你们,只能卷__了
#
8879次浏览
209人参与
#
去年的flag与今年的小目标
#
7616次浏览
172人参与
#
写论文的崩溃时刻
#
4507次浏览
120人参与
#
有深度的简历长什么样?
#
13989次浏览
294人参与
#
找工作时的取与舍
#
114869次浏览
847人参与
#
求职你最看重什么?
#
150656次浏览
875人参与
#
你不能接受的企业文化有哪些
#
9284次浏览
146人参与
#
腾讯音乐求职进展汇总
#
147321次浏览
1048人参与
#
你觉得第一学历对求职有影响吗?
#
219609次浏览
1226人参与
#
你都用AI做什么
#
5582次浏览
128人参与
#
入职第一天
#
8393次浏览
174人参与
#
机械人求职现状
#
31603次浏览
292人参与
#
晒一晒你收到的礼盒
#
94952次浏览
460人参与
#
一人分享一道面试手撕题
#
18647次浏览
701人参与
#
机械人的秋招小目标
#
25935次浏览
228人参与
#
实习中的菜狗时刻
#
457324次浏览
3525人参与
#
毕业后不工作的日子里我在做什么
#
225936次浏览
1681人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务