获赞
62
粉丝
10
关注
5
看过 TA
68
哈尔滨工业大学(威海)
2022
Java
IP属地:广东
暂未填写个人简介
私信
关注
华为机试第一题,参考牛客某大佬的Java动态规划实现,理了一下逻辑,修正了小bug。 package huawei; import java.util.*; /**  * @author masterYHH  * @version 1.0  * @date 2021/9/2 00:31  */ public class Test001 {     public static void main(String[] args) {         Scanner sc = new Scanner(System.in);         // 节点数k         int k = Int...
一骑诀尘:private static int[] dpFunction(int[] pre, int[] capacity) { // 第一次发送的数据包数量,根据节点发送能力判断 int send1 = Math.min(pre[0], capacity[0]); // 第二次发送的数据包数量,比较三者得到最小值结果: // ①当前节点发送能力capacity[0], // 如果大于这个,多余的包也丢弃,无用 // ②当前节点缓存能力和上一个节点缓存数据包数量,capacity[1] + pre[1], // 如果这个最小,说明当前节点缓存容量拉满,并且加上前一个节点的缓存包也没达到当前节点发送容量 // ③前一个节点发送过来的包总量经当前节点发送后剩余的数据包数量,包括前一个包发送完剩余包数量,前一个节点缓存数量(把初始状态看作第0个节点) // 这种情况相比于情况②,说明当前节点的缓存能力没达到极限,所以得通过pre[0] - capacity[0]算出来 // 逻辑:首先比较当前节点发送能力和前一个节点传过来的数据包数量,如果①小于②,则取①;再拿这个结果和①比较,取较小值 int cache = Math.min(Math.max(0,pre[0]-capacity[0]), capacity[1]); int send2 = Math.min(cache+pre[1], capacity[0]); return new int[]{send1, send2}; } LZ的版本第二段结尾几行稍微改一下应该没问题了,笔试时能快速想到动态规划真的牛批
投递华为等公司10个岗位 >
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务