阿里笔试求助

题目大概是这个意思
1.有一个数组的数组(每个数组长度不定),然后每次只能从一个数组两端取值,取完就没了,一共取N次,问总共取的最大值是多少?

来个大佬救救我,就没一个人做出来吗?

全部评论
第二题分组背包,提前算好每一行恰好得到k个物品的最大价值。
6 回复 分享
发布于 2020-07-27 20:44
两个20%
1 回复 分享
发布于 2020-07-27 20:03
第一题 import java.util.Scanner; public class Main {     public static void main(String[] args) {         Scanner scanner = new Scanner(System.in);         int n = scanner.nextInt();         for(int i = 0;i<n;i++){             int length = scanner.nextInt();             int arr[] = new int[length];             for(int j = 0;j<length;j++){                 arr[j] = scanner.nextInt();             }             String res = play(arr);             System.out.println(res);         }     }     private static String play(int []array){         String result = "NIUMEI";         if(array.length%2!=0)             return "NIUNIU";         else {             for(int i = 0;(i+1)<array.length;i+=2){                 //仅数字成对出现时,输出NIUMEI。                 if((array[i]^array[i+1])!=0){                     return "NIUNIU";                 }             }         }         return result;     } } 第二题暴力没过。。。
1 回复 分享
发布于 2020-07-27 20:15
分享下我的思路叭,时间不够没写完,没有验证对不对。首先对于每一层,问题转化为取m个连续值,使得对于每一个m,连续值的总和最大(连续值就是最后留下来的收藏品),用前缀和和后缀和来做,返回一个map,key是拿走的收藏品数,value是拿走的收藏品价值,最后一共有n个map,再对其进行dfs,剪枝策略是当前value要小于历史最佳结果且剩余的待分析map的size总和加上当前已选取的收藏品数量要小于m
1 回复 分享
发布于 2020-07-27 20:21
我用的双端队列暴力超时了。。
点赞 回复 分享
发布于 2020-07-27 20:04
我用回溯法做的,感觉思路没错,但显示未通过所有测试,只通过了10%。是不是有什么坑点?
点赞 回复 分享
发布于 2020-07-27 20:04
20%
点赞 回复 分享
发布于 2020-07-27 20:04
输入的时候判断一下取两端,然后把数组从小到大排序取后m个数的和,这我的做法但只有百分之二十.......提示我数组越界我裂开了😭
点赞 回复 分享
发布于 2020-07-27 20:04
运气不好,这两道题的真的是没思路,可能还是我太菜了
点赞 回复 分享
发布于 2020-07-27 20:05
这个它便利所有层级,假设层级是n,那就是n*2个元素的最大值,记录最大值的位置,删除掉,避免下一次重复选择。
点赞 回复 分享
发布于 2020-07-27 20:05
20%。。。
点赞 回复 分享
发布于 2020-07-27 20:05
看到这么多20%的我就放心了0.0
点赞 回复 分享
发布于 2020-07-27 20:06
我做的怎么不是这两道???什么NIUNIU NIUMEI的
点赞 回复 分享
发布于 2020-07-27 20:06
思路有但是最后没写完,裂开了555
点赞 回复 分享
发布于 2020-07-27 20:07
辅助的vector,存储每一层两端数据的索引值,每次取值的时候,遍历每一层的数据,找出最大值,然后更新该值对应的索引。感觉思路应该没问题,但是只通过20%,也不知道是什么样例没有通过,都不知道该怎么调试了😂
点赞 回复 分享
发布于 2020-07-27 20:07
怎么第一题感觉是dp
点赞 回复 分享
发布于 2020-07-27 20:10
pass 0% 😂
点赞 回复 分享
发布于 2020-07-27 20:11
第一题我最后的答案是错了,反而ac了。。。
点赞 回复 分享
发布于 2020-07-27 20:14
我有个思路,但是时间不够没试,就是对每一层按照取值从大到小排列,然后每次搜索n层第一个值最大的,选完删除,一直选到需要的个数
点赞 回复 分享
发布于 2020-07-27 20:14
求第一题和第二题思路
点赞 回复 分享
发布于 2020-07-27 20:14

相关推荐

10-30 22:18
已编辑
毛坦厂中学 C++
点赞 评论 收藏
分享
评论
7
12
分享
牛客网
牛客企业服务