华为机试

Posted 泡面小王子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为机试相关的知识,希望对你有一定的参考价值。

选秀节目评分 选秀节目打分,分为专家评委和大众评委,score[]数组里面存储每个评委打的分数,judge_type[] 里存储与 score[] 数组对应的评委类别,judge_type[i] == 1,表示专家评委 judge_type[i] == 2,表示大众评委,n表示评委总数。 打分规则如下: 专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分 = 专家评委平均分*0.6 + 大众评委*0.4,总分取整。 如果没有大众评委,则 总分 = 专家评委平均分,总分取整。函数最终返回选手得分。

#include<iostream>
using namespace std;
//算法一(这个考虑更全面)
int cal_score(int score[], int judge[], int N)
{
    int ret = 0, n = 0, m = 0;
    double sum1 = 0, sum2 = 0;
    if (N&&score&&judge)
    {
        for (int i = 0; i < N;i++)
          switch (judge[i])
         {
          case 1:sum1 += score[i]; ++n; break;
          case 2:sum2 += score[i]; ++m; break;
          default:;
          }
        if (n) sum1 = int(sum1 / n);//考虑到专家人数为0,务必确保除数不为0
        if (m) sum2 = int(sum2 / m);
        ret = m ? sum1*0.6 + sum2*0.4 : sum1;
    }
    return ret;
}
//算法二
int cal_score1(int score[], int judge_type[], int n)
{
    int scr = 0;
    int sum1 = 0.0;
    int sum2 = 0.0;
    int cnt = 0;//专家评委.  
    for (int i = 0; i < n; i++)
    {
        if (judge_type[i] == 1)
        {
            cnt++;
            sum1 += score[i];
        }
        else if (judge_type[i] == 2)
            sum2 += score[i];
    }
    if (cnt == n)
        scr = sum1 / cnt;
    scr = 0.6*(sum1 / cnt) + 0.4*(sum2 / (n - cnt));
    return scr;
}
int main()
{
    int n = 10;
    int score[10] = { 80, 85, 90, 80, 75, 95, 80, 90, 95, 92 };
    int judge[10] = { 1, 1, 1, 1, 1, 1, 2, 2, 2, 2 };
    int final_score = cal_score(score, judge, n);
    cout << final_score << endl;
    system("pause");
    return 0;
}

 

以上是关于华为机试的主要内容,如果未能解决你的问题,请参考以下文章

华为OD机试真题Python实现翻转单词顺序真题+解题思路+代码(2022&2023)

华为OD机试 - 单词反转(Python)| 真题含思路

华为OD机试 - 单词反转(JavaScript) | 机试题算法思路 2023

华为OD机试真题Java实现匿名信真题+解题思路+代码(2022&2023)

华为机试真题 Python 实现匿名信2022.11 Q4 新题

华为机试真题 C++ 实现匿名信2022.11 Q4 新题