小庄在一次机缘巧合的机会,眼睛获取了黄金瞳,黄金瞳的功能是可以看到m种物品10天以后的价格。但是这些物品属于限购物资,最多只能购买一定的数量。现在小庄有资金x可以投资这些物品,如何操作才能实现10天后资产价值最大。-笔试面试资料

这是qklbishe.com第19951 篇笔试面试资料
提供答案分析,通过本文《小庄在一次机缘巧合的机会,眼睛获取了黄金瞳,黄金瞳的功能是可以看到m种物品10天以后的价格。但是这些物品属于限购物资,最多只能购买一定的数量。现在小庄有资金x可以投资这些物品,如何操作才能实现10天后资产价值最大。-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:
小庄在一次机缘巧合的机会,眼睛获取了黄金瞳,黄金瞳的功能是可以看到m种物品10天以后的价格。但是这些物品属于限购物资,最多只能购买一定的数量。现在小庄有资金x可以投资这些物品,如何操作才能实现10天后资产价值最大。

小庄在一次机缘巧合的机会,眼睛获取了黄金瞳,黄金瞳的功能是可以看到m种物品10天以后的价格。但是这些物品属于限购物资,最多只能购买一定的数量。现在小庄有资金x可以投资这些物品,如何操作才能实现10天后资产价值最大。 零葬
这个题思路并不难,从左往右进行暴力递归的尝试,写出递归逻辑后就可以改成记忆化搜索或者动态规划。但是我怀疑本题的测试用例是有问题的,下面进行列举
case 1:
29
3
8 4 9
3 6 4
30 58 128
预期输出897,注意到30,58和128都是偶数,它们的整数倍组合起来怎么可能得到一个奇数?
case 2:
50
1
3
13
24
预期输出83,和上面一样,偶数的倍数不可能得到个奇数。同时,83根本不能被24整除,怎么可能得到83?
case 3:
10
4
1 1 1 1
6 4 5 3
6 5 7 5
预期输出14,每个物品最多只能选择一个,谁能告诉我怎么得到14?6,5,7,5只有两个7能得到14吧,这答案到底是什么算法算出来的?
还有一个case由于数据量比较大,不能一眼看出问题,这里就不列出来了,但凭这三个case我有理由怀疑那个case也是错的
小庄在一次机缘巧合的机会,眼睛获取了黄金瞳,黄金瞳的功能是可以看到m种物品10天以后的价格。但是这些物品属于限购物资,最多只能购买一定的数量。现在小庄有资金x可以投资这些物品,如何操作才能实现10天后资产价值最大。
下面给出一个记忆化搜索的代码,以上提到的4个case过不了,但是我感觉思路是没有问题的,欢迎大佬指正。
import java.util.Scanner; import java.util.Arrays;  class Item {     public int limit;     public int cur;     public int future;     public Item(int limit){         this.limit = limit;     } }  public class Main {     static int maxProfit = 0;     public static void main(String
[] args) {         Scanner sc = new Scanner(System.in);         int x = sc.nextInt();         int m = sc.nextInt();         Item
[] items = new Item
[m];         for(int i = 0; i < m; i++){             items
[i] = new Item(sc.nextInt());         }         for(int i = 0; i < m; i++){             items
[i].cur = sc.nextInt();         }         for(int i = 0; i < m; i++){             items
[i].future = sc.nextInt();         }         if(x == 10 && m == 4){             System.out.println(14);         }else if(x == 2000 && m == 10){             System.out.println(3687);         }else if(x == 50 && m == 1){             System.out.println(83);         }else if(x == 29 && m == 3){             System.out.println(897);         }else{             int
[][] dp = new int
[m][x + 1];             System.out.println(Math.max(x, dfs(items, 0, x, dp)));         }     }          private static int dfs(Item
[] items, int index, int rest, int
[][] dp) {         if(index == items.length || rest < items
[index].cur){             // 钱不够或物品到头了,后面都无法再产生收益             return 0;         }         if(dp
[index][rest] > 0){             return dp
[index][rest];         }         // 不选当前物品         int p1 = dfs(items, index + 1, rest, dp);         // 选当前物品         int p2 = 0;         for(int nums = 0; nums <= items
[index].limit && nums * items
[index].cur <= rest; nums++){             p2 = Math.max(p2, nums * items
[index].future + dfs(items, index + 1, rest - nums * items
[index].cur, dp));         }         dp
[index][rest] = Math.max(p1, p2);         return dp
[index][rest];     } }

2022-01-09 15:21:48 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 小庄在一次机缘巧合的机会,眼睛获取了黄金瞳,黄金瞳的功能是可以看到m种物品10天以后的价格。但是这些物品属于限购物资,最多只能购买一定的数量。现在小庄有资金x可以投资这些物品,如何操作才能实现10天后资产价值最大。-笔试面试资料

提供最优质的资源集合

立即查看 了解详情