9.1华为机试第二题,大佬看看为什么只过45

static Set<String> res = new HashSet<>();
    public static void main(String[] args) {
        Map<String, Set<String>> subClass = new HashMap<>();
        Map<String, Set<String>> instance = new HashMap<>();
        Scanner in = new Scanner(System.in);
        int k = Integer.parseInt(in.nextLine());
        for (int i = 0; i < k; i++) {
            String[] ss = in.nextLine().split(" ");
            if ("subClassOf".equals(ss[1])) {
                Set<String> set = subClass.getOrDefault(ss[2], new HashSet<>());
                set.add(ss[0]);
                subClass.put(ss[2], set);
            } else {
                Set<String> set =  instance.getOrDefault(ss[2], new HashSet<>());
                set.add(ss[0]);
                instance.put(ss[2], set);
            }
        }
        String a = in.nextLine();
        dfs(a, subClass, instance);
        if (res.isEmpty()) {
            System.out.println("empty");
            return;
        }
        List<String> r = new ArrayList<>(res);
        Collections.sort(r);
        for (int i = 0; i < r.size() -1; i++) {
            System.out.print(r.get(i));
            System.out.print(" ");
        }
        System.out.print(r.get(r.size() -1));
    }

    static void dfs(String s, Map<String, Set<String>> subClass, Map<String, Set<String>> instance) {
        res.addAll(instance.getOrDefault(s, new HashSet<>()));
        Set<String> set = subClass.get(s);
        if(set != null && !set.isEmpty())
        for (String a : set) {
            dfs(a, subClass, instance);
        }
    }

 
 
#华为机试##笔经##华为#
全部评论
我bfs过90
1 回复 分享
发布于 2021-09-02 01:23
一样的方法,DFS BFS都是45
点赞 回复 分享
发布于 2021-09-02 00:06
可能只考虑了a是b的子概念,没有考虑c是a的子概念,所以c是b的子子概念…我当时是这个问题调了就ac了
点赞 回复 分享
发布于 2021-09-02 09:44
bfs,dfs都可以,问题应该不在这上面。我没考虑set去重,用的list,bfs直接ac。
点赞 回复 分享
发布于 2021-09-02 11:44
我是java建树,也只过了45,但是今天hr说有200多分,不知道是不是后来算对了
点赞 回复 分享
发布于 2021-09-02 20:43
有多个空格的情况
点赞 回复 分享
发布于 2021-09-06 09:52

相关推荐

从24年初开学开始接触到前端,和实验室几个同学一起学习,可似乎我总比他们慢一步,每每学完一个地方,我掌握的程度好像都不比他们,第一次实验室的任务实战,我两眼一抹黑,完全不知道从何下手,而他们却是游刃有余,可我当时没有丧气,只有一个念头,既然学习能力不如他们,那我就拿更多的时间去学,于是我把打游戏,运动锻炼的时间也拿来学习。到了暑假,实验室一起做项目,为了可以更好的参与进去,于是我暑假开始留校和同学师哥一起做项目,每天早上九点多去实验室,晚上十点多回宿舍,校田径队的训练没有去,中间也只回家待了一周。到暑假结束开学之后,一位很优秀的师哥拿到了几个offer,我从他身上看到了希望,双非本科就业的希望...
offer求求哩:我的评价是认知低,建议多看书,认知低的一个表现是人生仿佛没考上大学就是进厂,考上了就是考研考公找工作。股市里有一个很有意思的故事,说的是当门口大妈都在谈论股票的时候,说明行情已经见顶了。当你的父母在某些事上没有成功却支持你说明事情可能已经不可靠了,但在某些事上反对你,说明这件事可能还有成功的可能。(仅个人观点)😆😆
点赞 评论 收藏
分享
三斤大芒果:切图仔过年回去天塌了
点赞 评论 收藏
分享
纸鹰:祝你未来越来越好
点赞 评论 收藏
分享
评论
点赞
11
分享

创作者周榜

更多
牛客网
牛客企业服务