华为od机试

第一道:身高体重 排序 
import java.util.*;
public class test {

    static class Stu{
    public int ind;
    public int h;
    public int m;
    Stu(int ind,int h,int m){
        this.ind=ind;
        this.h=h;
        this.m=m;
    }
}

    public static void main(String[] args) {


        Scanner in = new Scanner(System.in);
        int n = Integer.parseInt(in.nextLine());
        String [] h = in.nextLine().split(" ");
        String [] m = in.nextLine().split(" ");
        List<Stu> list = new ArrayList<>(n);
        if (n==h.length&&n==m.length){
            for (int i = 1; i <=n ; i++) {
                list.add(new Stu(i,Integer.parseInt(h[i-1]),Integer.parseInt(m[i-1])));
            }
        }
        list.sort((a,b)->{
            int i=a.h-b.h;
            if (i==0){
                i=a.m-b.m;
            }
            return i ;
        });
        for (int i=0;i<list.size();i++) {
            System.out.print(list.get(i).ind);
            if (i!=list.size()-1){
                System.out.print(" ");
            }
        }
    }
}


第二道:缺勤打卡 滑动窗口计数 (这个题 给的用例过了自己测了几个都是可行的,提交后为0,我为了50%的通过 就吧处理方法注释掉了,等于逻辑没有实现直接判定为真,有50%,但是不知道问题所在,有点搞不懂是不是环境什么原因,求教。 #华为OD# #华为od# #华为笔试# ) 
public class Main {
    public static void main(String[] args) {
        List<String> inS = new ArrayList<>();
        Scanner in = new Scanner(System.in);
        int n = Integer.parseInt(in.nextLine());
        int m = n;
        while (m > 0) {
            inS.add(in.nextLine());
            m--;
        }
        if (n == inS.size() && n > 0) {
            for (int i = 0; i < inS.size(); i++) {
                String[] s = inS.get(i).split(" ");
                if (fun(s)) {
                    System.out.print("true");
                } else {
                    System.out.print("false");
                }
                if (i != inS.size() - 1) {
                    System.out.print(" ");
                }
            }
        }
    }

    static boolean fun(String[] sArray) {
//        for (String s : sArray) {
//            if ("absent".equals(s)) {
//                return false;
//            }
//        }
//        for (int i = 0; i < sArray.length; i++) {
//            if (("late".equals(sArray[i]) || "leaveearly".equals(sArray[i]))) {
//                if (i < sArray.length - 1 && ("late".equals(sArray[i + 1]) || "leaveearly".equals(sArray[i + 1]))) {
//                    return false;
//                }
//            }
//        }
//        if (sArray.length <= 7) {
//            for (String s : sArray) {
//                int count = 0;
//                if (!"present".equals(s)) {
//                    count++;
//                }
//                if (count > 2) {
//                    return false;
//                }
//            }
//        } else {
//            for (int j = 0; j <= sArray.length - 7; j++) {
//                for (int i = j; i < j + 7; i++) {
//                    int count = 0;
//                    if (!"present".equals(sArray[i])) {
//                        count++;
//                    }
//                    if (count > 2) {
//                        return false;
//                    }
//                }
//            }
//
//        }
        return true;
    }

}



第三道:书本叠加 动态规划最优解 
import java.util.*;
public class Main {

    static class Book{
       int c;
       int k;
       Book(int c,int k){
           this.c=c;
           this.k=k;
       }
   }

    public static void main(String[] args) {


        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        s=s.replaceAll("\\[","");
        s=s.replaceAll("]","");
        String [] str=s.split(",");
        if (str.length>0){
            List<Book> list=new ArrayList<>(str.length/2);
            for (int i=0;i<str.length/2;i++){
                new Book(Integer.parseInt(str[i*2]),Integer.parseInt(str[i*2+1]));
            }
            list.sort((a,b)->{
                int i=a.c-b.c;
                if (i==0){
                    i=a.k-b.k;
                }
                return i;
            });
            int [] dp =new int[s.length()/2];
            dp[0]=1;
            for (int i=1;i<list.size();i++){
                for (int j = 0; j <i ; j++) {
                    if (list.get(i).k>list.get(j).k&&list.get(i).c>list.get(j).c){
                        dp[i]=Math.max(dp[i],dp[j]+1);
                    }
                }
            }
            int max=dp[0];
            for (int i: dp) {
                if (i>max){
                    max=i;
                }
            }
            System.out.println(max);
        }

    }

}






#华为OD机考##华为od机试##华为od##华为OD##西安#
全部评论
点赞 回复 分享
发布于 2022-09-04 16:27 河北
ntu去od吗
点赞 回复 分享
发布于 2022-09-04 18:02 河南
祝楼主拿到心仪的offer~有想了解od的同学可以私信我哦~可捞可咨询
点赞 回复 分享
发布于 2022-09-07 10:32 广东
请问除了第二题其他都100%过了吗?
点赞 回复 分享
发布于 2022-09-11 15:44 广东

相关推荐

10-09 09:39
门头沟学院 C++
HHHHaos:这也太虚了,工资就一半是真的
点赞 评论 收藏
分享
HNU_fsq:建议直接出国,这简历太6了。自愧不如
点赞 评论 收藏
分享
3 13 评论
分享
牛客网
牛客企业服务