2021年9月11日华为笔试第1题

题目描述

假设深度学习模型是一个有向无环图。若算子A依赖算子B的输出,则当B执行完后才能计算A,如果没有依赖关系,则可并行执行,计算每个网络所需要的最短时间。

  1. 算子索引从0开始。

题目分析

这一题是有向无环图(多叉树)的遍历问题,给定多叉树信息,求从根节点到叶节点的所有路径中的最大执行时间;


输入输出描述

7
A 10 1 2 3
B 9 4 5 6
C 22 
D 20
E 19
F 18
G 21 

第一行7代表有7个节点,接下来的2~N+1行代表的每一个节点信息;
第一行节点A,消耗时间是10,其子节点为1,2,3(索引从0开始,即代表B、C、D)

将输入转换为多叉树:
在这里插入图片描述
邻接矩阵:
在这里插入图片描述
输出应该是40。

代码

package com.company;
import java.util.*;
public class Main{
    private static int res = Integer.MIN_VALUE;
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        //有多少个节点
        int N = sc.nextInt();
        //为了存放回车符
        sc.nextLine();
        //邻接矩阵
        int[][] arr = new int[N][N];
        //各个节点的消耗时间数组,索引从0开始
        int[] a = new int[N];
        //输入每个节点信息
        for(int i=0;i<N;i++){
            //输入如:A 10 1 2 3
            String[] s = sc.nextLine().split(" ");
            //存放索引为i的节点的价值
            a[i]=Integer.parseInt(s[1]);
            //存放当前节点的子节点,放在邻接矩阵中对应位置为1
            if(s.length>2){
                for(int j=2;j<s.length;j++){
                    arr[i][Integer.parseInt(s[j])]=1;
                }
            }
        }
        //邻接矩阵的第0行开始遍历a[0][i]为1的节点,深度遍历以i为起点多路径
        for(int i=1;i<N;i++){
            if(arr[0][i] == 1)
            dfs(arr,a,a[i],N,i);
        }
        System.out.print(a[0]+ res);
    }

    /**
     *
     * @param arr 邻接矩阵
     * @param a  每个节点消耗的时间
     * @param val 当前路径走到第i个节点时消耗的时间
     * @param N  节点个数
     * @param i  当前节点的索引
     * @return
     */
    public static int dfs(int[][] arr, int[] a, int val, int N, int i){
        for(int j=i+1;j<N;j++){
            if(arr[i][j] == 1){
                dfs(arr,a,val+a[j],N,j);
            }
        }
        //以索引i为起点的路径走完,res存放当前最大的消耗时间;
        res = Math.max(res,val);
        return 0;
    }
}

执行结果:
在这里插入图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 华为海思2021数字芯片IC的笔试目主要分为两部分,一部分是单选和多选,另一部分则是编程。 单选和多选主要考察对数字电路和计算机原理的理解,目涵盖了数字信号处理、数制转换、寄存器、存储器、逻辑门电路等方面的知识。需要注意的是,有些目看似简单但是需要注意细节,例如计算机的存储空间测量单位是字节而不是位。 编程则需要根据目要求编写相应的程序。一般来说,编程比较难,需要对编程语言和算法都有比较深的理解。此次考试的编程主要考查了对链表的理解和程序设计能力。 通过本次考试,可以看出华为海思2021数字芯片IC的笔试目难度较大,需要对相关领域有深入的掌握和理解。在备考期间,应该多加练习和思考,增加对基础知识的掌握和应用能力。 ### 回答2: 华为海思2021数字芯片IC笔试主要考察了应聘者对于数字电路设计的相关知识点的理解和应用能力。测试分为两部分,一部分是基础知识选择,另一部分是设计。 基础知识选择主要考察了应聘者对于数字电路、布尔代数、时序分析等基础知识点的了解。比如,有一道目是让应聘者判断一段代码是否可以正确地实现计数器功能。这需要应聘者对计数器的基本组成原理和实现方法有充分的了解。 设计则更加考验应聘者的应用能力。其中,一道目要求应聘者根据给定的电路输入、输出和时钟信号,设计出一个可靠稳定的时序电路。这需要应聘者对时序电路的编程能力、逻辑设计和时序分析能力有较高的掌握。 对于应聘者而言,需要提前充分准备,熟悉数字电路设计相关知识点,深入理解数字电路的实现原理和设计方法。同时,要注重考虑实际应用需求和技术实现可行性,保证设计方案的有效性。只有全面掌握相关知识和技能,才能在笔试中取得更好的成绩,从而在海思数字芯片IC设计岗位中取得更好的工作机会。 ### 回答3: 华为海思2021数字芯片IC笔试主要考察了应聘者在数字电路设计、Verilog语言、RTL综合等方面的知识掌握程度和综合应用能力。试设计难度适中,较为贴近实际工作中的应用场景。 第一是给定一组规定的时序图,要求设计Verilog代码和RTL电路图,实现一个4位带使能端的同步锁存器。此考查了对时序逻辑电路的理解,需要应聘者能够将时序图抽象成基本的组合逻辑与时序逻辑模块,结合Verilog语言编写可合成的Verilog代码和RTL电路图。 第二是仿真目,要求给定Verilog代码进行仿真,并观测输出信号,分析仿真结论。此考查了对数字电路仿真的能力和Verilog语言的掌握程度,需要应聘者熟悉Verilog仿真工具的使用方法,能够正确编写测试代码,并对仿真结果进行分析。 第三是RTL综合目,给定Verilog代码,要求进行RTL综合并生成门级网表文件。此考查了对数字电路综合的理解和工具使用能力,需要应聘者熟悉数字电路综合的各项规则,能够正确地进行综合操作,并生成准确的门级网表文件。 总体来说,华为海思2021数字芯片IC笔试考查了应聘者的数字电路设计和RTL综合等方面的综合应用能力,较为贴近实际工作。应聘者可以通过思考、练习和掌握基本的数字电路设计和RTL综合知识,提升答能力和应用水平,更好地应对类似的笔试目。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Micheal_YCC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值