首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
小乌
2016-08-02 23:06
电子科技大学 Java
关注
已关注
取消关注
网易笔试Android编程题第三题最大乘积
大家的思路是什么啊,我当时想的是dp,后来发现不适合有负数的,或者我不知道怎么适用于负数
提示
全部评论
推荐
最新
楼层
schizophrenia
中国科学院大学 C++
最大最小一起搞?
点赞
回复
分享
发布于 2016-08-02 23:10
〝No_Body〞
武汉大学 算法工程师
Leetcode原题 我记得
点赞
回复
分享
发布于 2016-08-02 23:16
forgot93
杭州电子科技大学 Java
每次DP 记录最大最小。 注意合理初始化就行了
点赞
回复
分享
发布于 2016-08-02 23:20
牛客722894号
C++
记录当前的最大最小,但是最后才发现这个题的数据非常大,还需要用大数么?。。
点赞
回复
分享
发布于 2016-08-03 09:31
324234
快手_Android研发工程师
咦。 那这样子就是穷举法对吧?
点赞
回复
分享
发布于 2016-08-03 09:48
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
还没有回复哦~
相关推荐
不愿透露姓名的神秘牛友
02-12 10:05
校招Offer求比较:小米集团VS汇丰软件
小米集团
算法工程师
28.0k*15.0
泡沫灬一触即破:
楼上那个看来是看人拿高薪,自己又不如意搁这泄愤呢是吧,看你过往评论很难不怀疑你的精神状态
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
02-14 12:16
上科大、南科大在HR眼里属于什么类型的学校?
很想知道上海科技大学和南方科技大学这样的学校在HR眼中(尤其是互联网行业)是什么样的?能过简历关吗?#牛客AI配图神器#上海科技大学(中文简称:上科大,英文全称:ShanghaiTech University,英文缩写:ShanghaiTech)是由上海市人民政府与中国科学院共同举办、共同建设,由上海市人民政府负责日常管理的全日制普通高等学校。自建立以来,学校努力建设和发展成为一所小规模、高水平、国际化的研究型、创新型大学。2022年2月入选第二轮“双一流”建设高校。南方科技大学(简称:南科大)是深圳在中国高等教育改革发展的时代背景下创建的一所高起点、高定位的公办...
学历对求职的影响
牛客激励计划
点赞
评论
收藏
分享
01-15 20:49
宝鸡三和职业学院 算法工程师
永远化身华黑子
西松屋:
说明原部门有机会把
点赞
评论
收藏
分享
02-11 16:37
思特奇_招聘经理
思特奇合家欢精彩回顾第一弹|思特奇人,争做奋斗者!质效双升,高效,高价值!
思特奇的大家庭跨越千山万水,将欢声笑语洒满了全国各地。回顾本次合家欢盛宴,不仅是对过去一年辛勤付出的肯定与庆祝,更是对每一位思特奇人奋斗者精神的提振与激励。在这里,每一位员工都是这个大家庭中不可或缺的一员,我们的每一次努力,都在为这个家的繁荣昌盛添砖加瓦。灯火辉煌处,是思特奇人最真挚的笑容;欢声笑语间,是家属们对奋斗者最深情的鼓励。在这个特别的夜晚,我们不仅见证了爱的传递,更共同绘制了一幅幅关于团结、梦想与奋斗的绚丽画卷。每一幅画面,都是一个温暖的故事,讲述着思特奇人在不同地域、不同岗位上,如何用汗水浇灌希望,以智慧点亮生活。每一站的相聚,都是对过去一年辛勤耕耘的最好回馈,也是对未来旅程的美好...
思特奇公司氛围 15人发布
投递思特奇等公司10个岗位 >
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
腾讯实习生基地一面面经
2.9W
2
...
我和面试官有个约会
1.1W
3
...
快手Java日常实习一面
1.1W
4
...
一次失败找实习之旅
7309
5
...
代码与豹尾:一个做题家的赛博修仙启示录
5443
6
...
情人节还在刷牛客的,这辈子有了
4737
7
...
太好了!春招面试有救了!
3504
8
...
兄弟们,考上玉虚宫研究生了,选哪个导师啊
3457
9
...
实在智能日常一面(全程高能,无八股)
3411
10
...
deepseek用来写论文,真的强爆了……
3197
创作者周榜
更多
正在热议
更多
#
大疆今年的机械笔试难吗?
#
34477次浏览
406人参与
#
影石Insta360求职进展汇总
#
105949次浏览
936人参与
#
文科生还参加今年的春招吗
#
1715次浏览
20人参与
#
大疆的机械笔试比去年难吗
#
63339次浏览
575人参与
#
选择和努力,哪个更重要?
#
36515次浏览
396人参与
#
24届市场营销薪资爆料
#
9010次浏览
62人参与
#
一人推荐一个值得去的通信/硬件公司
#
160259次浏览
1729人参与
#
如果公司降薪,你会跳槽吗?
#
42619次浏览
327人参与
#
提前批的机械人,你们都有面试了吗
#
86152次浏览
929人参与
#
产品实习,你更倾向大公司or小公司
#
128712次浏览
1710人参与
#
产品薪资爆料
#
96709次浏览
814人参与
#
春招启动,你开始投递了吗?
#
45461次浏览
435人参与
#
秋招前后对offer的期望对比
#
221771次浏览
1648人参与
#
大学四年该怎么过,才不算浪费时间?
#
3318次浏览
32人参与
#
华为工作体验
#
149736次浏览
1052人参与
#
职场上哪些事情令人讨厌
#
12740次浏览
58人参与
#
机械人,你的第一份感谢信是谁给的
#
19864次浏览
257人参与
#
和牛牛一起刷真题
#
104922次浏览
2067人参与
#
你觉得机械有必要实习吗
#
33543次浏览
318人参与
#
2022毕业的你对23届的寄语
#
35065次浏览
533人参与
牛客网
牛客企业服务