华为4.13软开笔试

#华为笔试#
100分:硬件最佳分配策略
200分:工费调度方案
300分:分糖果
第一题做了一个多小时95%
剩下两题来不及了,第二题0,第三题输出-5%
求第二题第三题答案
下面第一题代码
package exam.huawei;

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int m = in.nextInt();
    String ss = in.nextLine();
    int[][] fu = new int[m][5];
    for (int i = 0; i < m; i++) {
      String s = in.nextLine();
      String[] str = s.split(",");
      int[] num = new int[str.length];
      for (int k = 0; k < str.length; k++) {
        num[k] = Integer.parseInt(str[k]);
      }
      fu[i][0] = num[0];
      fu[i][1] = num[1];
      fu[i][2] = num[2];
      fu[i][3] = num[3];
      fu[i][4] = num[4];
    }
    int[] xu = new int[6];
    for (int i = 0; i < 6; i++) {
      xu[i] = in.nextInt();
    }
    int[][] use1 = new int[m][5];
    int j = 0;
    for (int i = 0; i < m; i++) {
      if (fu[i][1] >= xu[2]
          && fu[i][2] >= xu[3]
          && (fu[i][3] == xu[4] || xu[4] == 9)
          && (fu[i][4] == xu[5] || xu[5] == 2)) {
        for (int k = 0; k < 5; k++) {
          use1[j][k] = fu[i][k];
        }
        j++;
      }
    }
    int[][] use = new int[j][5];
    for (int i = 0; i < j; i++) {
      for (int k = 0; k < 5; k++) {
        use[i][k] = use1[i][k];
      }
    }
    if (xu[1] == 1) {
      Arrays.sort(
          use,
              (o1, o2) -> {
                if (o1[1] == o2[1]) {
                  return o1[2] - o2[2];
                }
                return o1[1] - o2[1];
              });
      if (use.length > xu[0]) {
        int[][] use11 = new int[xu[0]][5];
        for (int i = 0; i < xu[0]; i++) {
          for (int k = 0; k < 5; k++) {
            use11[i][k] = use[i][k];
          }
        }
        Arrays.sort(
            use11,
                Comparator.comparingInt(o -> o[0]));
        System.out.print(xu[0]);
        for (int i = 0; i < xu[0]; i++) {
          System.out.print(" " + use11[i][0]);
        }
      } else {
        Arrays.sort(
            use,
                Comparator.comparingInt(o -> o[0]));
        System.out.print(use.length);
        for (int i = 0; i < use.length; i++) {
          System.out.print(" " + use[i][0]);
        }
      }
    } else {
      Arrays.sort(
          use,
              (o1, o2) -> {
                if (o1[2] == o2[2]) {
                  return o1[1] - o2[1];
                }
                return o1[2] - o2[2];
              });
      if (use.length > xu[0]) {
        int[][] use22 = new int[xu[0]][5];
        for (int i = 0; i < xu[0]; i++) {
          for (int k = 0; k < 5; k++) {
            use22[i][k] = use[i][k];
          }
        }
        Arrays.sort(
            use22,
                Comparator.comparingInt(o -> o[0]));
        System.out.print(xu[0]);
        for (int i = 0; i < xu[0]; i++) {
          System.out.print(" " + use22[i][0]);
        }
      } else {
        Arrays.sort(
            use,
                Comparator.comparingInt(o -> o[0]));
        System.out.print(use.length);
        for (int i = 0; i < use.length; i++) {
          System.out.print(" " + use[i][0]);
        }
      }
    }
  }
}


#华为笔试##笔试题目##实习#
全部评论
第三题就是lc题目,等分子集,用01背包动态规划。但lc只要求求输出true&nbs***bsp;false,这道题还得输出具体选择了哪些
2 回复 分享
发布于 2022-04-13 23:31
第二题,仅供参考 #include <bits/stdc++.h> using namespace std; int N; struct num{ int time; int sorce; friend bool  operator < (num a,num b) {      if(a.sorce==b.sorce)      {          return a.time < b.time;      }      return a.sorce > b.sorce; } }; int main() {     scanf("%d",&N);     if(N==0)     {         return 0;     }     vector<num> arr;     for(int i=0;i<N;i++)     {         int t=0,s=0;         scanf("%d%d",&t,&s);         num n;         n.time=t;         n.sorce=s;         arr.push_back(n);     }     sort(arr.begin(),arr.end());     int ans = arr[0].sorce;     int cur_time = 2;     for(int i=1;i<N;i++)     {         if(arr[i].time >= cur_time)         {             ans+= arr[i].sorce;             cur_time++;         }     }     printf("%d",ans);     return 0; }
1 回复 分享
发布于 2022-04-14 10:31
第三题leetcode有类似原题
点赞 回复 分享
发布于 2022-04-17 11:08
我没过,这几次比前面几次难多了
点赞 回复 分享
发布于 2022-04-16 20:31
跟我一样,第三题一顿dfs最后5%,第二题我是看都没看懂
点赞 回复 分享
发布于 2022-04-14 00:28
第三题,0-1背包,这样应该可以
点赞 回复 分享
发布于 2022-04-13 22:05
可以使用本地IDe吗😕那个编译器我敲吐了
点赞 回复 分享
发布于 2022-04-13 21:38

相关推荐

评论
2
35
分享

创作者周榜

更多
牛客网
牛客企业服务