用友昨日笔试

题目可以看这位牛友发的

https://www.nowcoder.com/discuss/648838695012814848

还没投校招却收到了笔试邀请(倒是之前投过实习

上来就拉了坨大的,题目比较晦涩难懂,不乏歧义句,比如第一题的设定中说

第一行输入一个正整数 n

接下来 n行,当前节点与其他j个节点的上下游关系...

当j=-1时,是终止节点

nm这个j既是数量又是节点id

本来限定java写算法就不快,还浪费了不少时间读题目。。。。

前两题用贪心算法直接就过了,第三题明显跳台阶要用dp做,可惜只a了80%,就不放出来献丑了,为了最后一题没排查,结果最后一题根本没时间写....

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static boolean checkSeq(List<List<Integer>> nodes, int[] check, int index){
        List<Integer> node = nodes.get(index);
        if(node.get(0)==-1){   //终止节点
            return true;
        }
        check[index] = 1;
        for(int i=0;i<node.size();i++){
            int newIndex = node.get(i);   // 每次取出一个节点递归遍历
            if(check[newIndex]==1){
                return false;
            }
            check[newIndex] = 1;   //递归前记得记录,返回时记得回溯
            if(!checkSeq(nodes, check, newIndex)){
                return false;
            }
            check[newIndex] = 0;
        }
        check[index] = 0;
        return true;
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            String line = in.nextLine();
            int n = Integer.valueOf(line);
            List<List<Integer>> nodes = new ArrayList<>();
            for(int i=0;i<n;i++){
                List<Integer> node = new ArrayList<>();
                line = in.nextLine();
                String[] nodelists = line.split(" ");
                for(String num: nodelists)
                    node.add(Integer.valueOf(num));
                nodes.add(node);
            }

            for(int i=0;i<n;i++) {
                int[] check = new int[n];  //使用一个数组记录判断是否有环
                if(checkSeq(nodes, check, i)){
                    System.out.print(i);
                    System.out.print(" ");
                }
            }
        }
    }
}

第二题

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Test {
    public static boolean solve(int damage, int limit){
        int multi=0;
        //从两份开始分(题目已说明)
        for(int i=2; i*i<=damage;i++){
            int v = damage/i;   //底数
            int m = damage%i;   //余数,如14分成3分份的结果 4+4+4+2
            multi = (int)Math.pow(v, i);
            if(m!=0){
                multi *= m;  //余数不为0补上
            }
            if(multi > limit){
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int limit = in.nextInt();
            int damage = in.nextInt();

            if(solve(damage, limit)){
                System.out.println(true);
            }
            else{
                System.out.println(false);
            }
        }
    }
}

全部评论
第二题主要还是贪心认为:同样的数的乘积比不同数间的乘积大
点赞 回复 分享
发布于 2024-08-02 20:45 福建

相关推荐

家人们,我现在真的好纠结。我是26届的,目前还没有实习过。我现在的情况是,想参加秋招,但是感觉自己的简历特别空,没有实习经历会不会秋招直接凉凉啊?可我又听说现在很多公司对26届实习生也不太感冒,说什么不确定性大。而且我最近在准备考公,时间上也有点冲突。要是把时间花在实习上,备考时间就少了。但要是不实习,又怕以后就业有问题😫有没有懂行的友友帮我分析分析:26届现在不实习,秋招找工作真的会很难吗?考公和实习该怎么平衡啊?如果现在不实习,考完公再去找实习还来得及吗?真的太焦虑了,希望大家能给我点建议🙏
小破站_程序员YT:我可能和大家的观点不一样。人的精力是有限的,不能既要还要。你又想实习又想考公最后又要秋招上岸,我觉得哪有那么多的选择。你如果想考上岸,那就全力以赴。如果想秋招上岸,就继续投实习,投没了,就继续准备秋招,秋招不行继续春招。别到最后,考公没上岸,觉得是花了时间浪费在找实习上了, 秋招没上岸,觉得是浪费时间准备考公去了。我是认为很难说可以去平衡 不喜勿喷,可以叫我删除
点赞 评论 收藏
分享
05-12 22:16
已编辑
北京邮电大学 研发工程师
牛客302360988号:0offer+1 滴滴都不给我面 佬没投鹅吗,鹅应该很喜欢北邮吧
投递美团等公司10个岗位
点赞 评论 收藏
分享
asdasdasdasdas:19岁,不容易啊可能升个本会好点,现在学历歧视太严重了
点赞 评论 收藏
分享
是每个人事都这样与找工作的人这样沟通吗?正常询问不可以吗
据说名字越长别人越关注你的昵称我觉得我要被关注了:excal 我还真不会
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务