华为机试题目

1.求区间最高分

int getMax(int *pScore, int low, int high)
{
    if(low > high)
    {
        high = low ^ high;
        low = low ^ high;
        high = low ^ high;
    }
    int maxScore = pScore[low];
    for(int i = low + 1; i <= high; ++i)
    {
        if(maxScore < pScore[i])
        {
            maxScore = pScore[i];
        }
    }

    return maxScore;
}

int main()
{
    int N = 0;
    int M = 0;
    while(cin >> N >> M)
    {
        int *pScore = new int[N + 1];
        for(int i = 1; i <= N; ++i)
        {
            cin >> pScore[i];
        }

        for(int i = 0; i < M; ++i)
        {
            char ch = ‘\0‘;
            int low = 0;
            int high = 0;

            cin >> ch >> low >> high;

            if(‘Q‘ == ch)
            {
                cout << getMax(pScore, low, high) << endl;
            }
            else if(‘U‘ == ch)
            {
                pScore[low] = high;
            }
            else
            {
                // continue;
            }
        }

        delete[] pScore;
    }

    return 0;
}

2.开发一个简单错误记录功能小模块,能够记录出错的代码坐在的文件名称和行号。

struct info {//记录出现的顺序,和次数
    int rank;
    int count;
    info(int rank, int count) {
        this->rank = rank;
        this->count = count;
    }
};
struct fullinfo {//一条完整的结果,字符串和次数
    string file;
    int rank;
    int count;
    fullinfo(string file, int rank, int count) {
        this->file = file;
        this->rank = rank;
        this->count = count;
    }
};
struct classcomp {//set的比较器
    bool operator()(const struct fullinfo& f1, const struct fullinfo& f2) {
        if (f1.count == f2.count)
            return f1.rank<f2.rank;
        return f1.count>f2.count;
    }
};

typedef struct info INFO;
typedef struct fullinfo FULLINFO;
int main() {
    unordered_map<string, INFO> record;
    unordered_map<string, INFO>::iterator it;
    unordered_map<string, INFO>::const_iterator itfind;
    set<FULLINFO, classcomp> ret;
    set<FULLINFO, classcomp>::iterator sit;
    string linestr;//一行输入
    string file;//文件名+行号
    int pos;//空格的位置
    int i = 1;
    while (getline(cin, linestr)) {
        if (linestr.length() == 0)
            break;
        pos = linestr.rfind("\\");
        file = linestr.substr(pos + 1);//拆分得到最后的filename和count
        itfind = record.find(file);//在map中查看是否已经有了该字符串,没有则插入,有则次数加1
        if (itfind == record.end()) {
            INFO tmpi(i, 1);
            record.insert(pair<string, INFO>(file, tmpi));
        }
        else {
            INFO tmpi(itfind->second.rank, itfind->second.count + 1);
            record.erase(file);
            record.insert(pair<string, INFO>(file, tmpi));
        }
        i++;
    }
    for (it = record.begin();it != record.end();it++) {
        FULLINFO tmpfull(it->first, it->second.rank, it->second.count);//构建排序的set集合
        ret.insert(tmpfull);
    }
    for (i = 0, sit = ret.begin();sit != ret.end() && i<8;++sit, ++i) {//最多输出8条记录,file少于16位
        if (file.find(" ") <= 16) {
            cout << (*sit).file << " " << (*sit).count << endl;
        }
        else {
            cout << (*sit).file.substr(file.find(" ") - 16) << " " << (*sit).count << endl;
        }

    }
    return 0;
}
时间: 2024-10-10 14:43:59

华为机试题目的相关文章

华为机试题目_(转载总结)

原作者地址:http://blog.csdn.net/xcbeyond/article/details/45627247 题目二 2.程序实现目标:求一个整型数组中元素的平均值,并统计其中大于和小于此平均值的元素的个数. 程序要求:输入:整型数组中的元素个数及各个元素. 输出:整型数组中元素的平均值,大于和小于此平均值的元素的个数. /* * 一点总结: * 1.Java中没有指针,那么如何定义全局变量,还是只要public就可以共享了呢,试下去掉static可不可以:错误:无法在静态方法中引用

2016校招华为机试题目回忆1

题目一:根据指定的分隔符分隔字符串,并输出指定的段 描述 根据指定的分隔符分隔字符串,并输出指定的段.如果指定的段超过分隔的段数,输出:NULL 举例: AAA?BBB?CCC??2 字符串为:AAA?BBB?CCC? 分隔符为:? 指定的段为:2 字符串分割为:AAA BBB CCC共三段,第2段字符串为:BBB 输入输出格式要求 输入分隔字符串长度小于128个字符,指定的段是一个正整数. 样例 输入:AAA?BBB?CCC??2 输出:BBB 题目二:输入若干整数,输出其中能被这些整数中其他

华为机试题目---字符串替换

题目要求:输入一个字符串,然后在输入一个整数,就是替换字符串的次数,然后依次输入需要替换的字符串-- 例如: 输入:abcdefg 3 a->qwe b->s fg->abc 输出:qwescdeabc //字符串替换 #include<iostream> #include<vector> #include<string> #define max 100 using namespace std; void change(char str[],int c

2016校招华为机试题目回忆

题目一:字符串格式化输出 AAABBBBCC–>A3B4C2 将字符串按照字符+连续重复数格式化输出 题目二:好友推荐 有n个人,每个人都有各自的好友列表.给定一个阈值p,当A和B的共同好友数超过p则推荐A和B为好友.请实现自动推荐直到没有好友可以推荐(每次推荐默认同意,即一定成为好友),然后进行一些查询. 查询1:A的好友数有几个?如果A不在这n个里面,输出-1,否则输出好友数: 查询2:A和B是好友吗?如果是则输出0,否则输出-1. 输入:p n m x y p为阈值,n为人数,m为初始时的

华为机试正式版(西安c/c++/java),今天下午去机试的题目,新鲜出炉了!

以下题目都是回忆的,题目都很简单, 大家有些基础就可以参加!(语言可以是c/c++,也可以是java的) 题目一(60分): 字符串操作, 将小写转换成大写, 将大写转化为小写, 数字的不做转换 例如, 输入:aBcD12 输出:AbCd12 题目二(100分): 将输入的字符串按照规定重新排序,如果字符串长度为奇数, 则中间的字符保持不变, 中间字符左侧降序排列, 右侧字符按照升序排列, 如果字符串长度为偶数,则左半侧字符降序排列,右半侧字符则按照升序排列 例如, 输入:ab5de 输出:ba

2014年七月华为校招机试题目--最难的一道, 呵呵!

今天百无聊赖之时, 漫心看到14年的华为校招机试题目, 一共三道, 前两道皆是平平, 第三道却柳暗花明, 让人眼前一亮. 咋一看, 饶有趣味, 看似平淡无奇, 然而却玄机颇深(对我这种弱渣而言).(不过对于ACMer, 好像应该用基础算法, 就能解决!) (然而我也只会基础的算法!!忏愧的紧!!!).如果有幸被大神看到, 能指点我一两招, 不胜感激!  下面是题目和我的详细题解思路(可供巨巨一笑!嘿嘿!). 2014年七月华为校招机试题目: 第三题: 输入一个正整数X,在下面的等式左边的数字之间

华为2016机试题目01

牛客网做的华为2016机试题目,新手,代码较乱,一起讨论. 题目要求如下: 老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问.当然,老师有时候需要更新某位同学的成绩. 输入描述: 输入包括多组测试数据. 每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目. 学生ID编号从1编到N. 第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩 接下来又M行,每一行有一

[华为机试真题]66.单词搜索

题目 代码 /*--------------------------------------- * 日期:2015-07-06 * 作者:SJF0115 * 题目:WordSearch * 来源:华为机试真题 -----------------------------------------*/ #include <iostream> #include <string> #include <vector> #include <stack> #include

华为机试 --- 求最大三位数

题目:输入10位0-9数字,取其中三位不同数字组合,求组合出来的最大三位数. 如输入 1 2 3 4 5 6 7 8 9 0,组合出来987最大. 测试代码如下: #include <stdio.h> #include <stdlib.h> int IsSame(int *a, int num); int main() { int i=0; int j=0; int a[10]={0}; int input =0; int length =0; int temp=0; for (i