2025年秋招-华为-9月3号开发岗真题第一题答案

https://www.nowcoder.com/share/jump/5761136381776948425416
华为开发岗真题 做了半天 
第一题答案
#include <cstdio>
#include <iostream>
#include <vector>
#include <map>
#include <string>
using namespace std;
//最后联盟的最终能量
int endx=0;
//定义一个函数来计算联盟的实力总值
void addx(string name);
//定义一个类存放各个星际的信息
class xingji{
public: string name;
    int x;
    map<string,int> fs;
    void setfirend(string friend1){
        if (!fs[friend1]==1) {
            fs[friend1]=1;
        }
    }
//定义这个i主要是为了后续在计算联盟总能量时避免重复加同一个星际的等级
   int i=1;
};
//定义一个存放星际的数组v来记录每个星际对象
vector<xingji> v;
int main() {

    int n;
    cin>>n;
//给容器v里放入我们的每个星际对象
    for(int i=0;i<n;i++){
        string name;
        int x;
        cin>>name>>x;
        xingji bobi;
        bobi.name=name;
        bobi.x=x;
        v.push_back(bobi);
    }
//定义变量 星际轨道的数量
    int guidao;
    cin>>guidao;
    string name,friend1;
    for(int i=0;i<guidao;i++){
        cin>>name>>friend1;
        for(auto &gui:v){
            if(gui.name == name){
                gui.setfirend(friend1);
            }else if(gui.name == friend1){
                gui.setfirend(name);
            }
        }
    }
//maxx表示等级最高星际在v容器里的下标,count主要用来记录循环的当前的下标,temp表示当前遇到过最大的等级是多少级
    int maxx=0,count=0,temp=0;
//计算出等级最高的星际
    for(auto& gui:v){

        if(gui.x>temp){
            temp=gui.x;
            maxx=count;
        }
        count++;
    }
    addx(v[maxx].name);
    cout<<v[maxx].name<<" "<<endx;

}
//实现计算联盟总能量的函数
void addx(string name) {
//for循环区遍历找到最大等级的星际
    for (auto& xing:v) {
            
        if (xing.name==name && xing.i!=0) {
            endx+=xing.x;
            xing.i=0;
            if (!xing.fs.empty()) {
                for (auto& f:xing.fs) {
//使用嵌套让盟友也以同样的方式加他盟友的实力                  
  addx(f.first) ;
                }
            }

        }
    }
}
全部评论
有没有招人的,找不到工作啊
点赞 回复 分享
发布于 04-23 21:01 陕西

相关推荐

评论
点赞
收藏
分享

创作者周榜

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