改善时间Hackerrank [因超时而终止]

时间:2016-01-21 02:27:48

标签: c++ performance c++11 timeout termination

我已根据以下提供的信息创建了代码。

“第一行将有一个整数N表示电话簿中的条目数。每个条目由两行组成:名称(名字或名字姓氏)和相应的电话号码。

在这之后,会有一些疑问。每个查询都将包含朋友的姓名。阅读查询直到文件结束。“

如果找不到名字,你应该打印“未找到”

问题出在Hackerrank.com上,我无法提交,因为程序是“因超时而终止”

有人可以帮我改进一下这段代码,让它运行得更快吗?!我几乎没弄明白如何让它运行所以我完全没有关于如何改进它的想法。

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;

class Number{
    public:
    string name;
    string lname;
    long number;
};

class PhoneBook{
    public:
    void findNumber(){
        string tempName;
        while (cin >> tempName){
            int nf=0;
            for(int i=0; i < phoneNumbers.size(); i++){
                if (tempName == phoneNumbers[i].name){
                    cout << phoneNumbers[i].name << "=" << phoneNumbers[i].number << endl;
            }
            else {
                nf +=1;
            }
        }
        if (nf == phoneNumbers.size()){cout << "Not found" << endl;}
    }
}

void addNumber(int entries){
    for(int numbers = 0; numbers < entries; numbers++){
        Number newContact;
        long num;
        cin >> newContact.name;
        cin >> num;
        if (!cin){
            cin.clear();
            cin >> newContact.lname >> newContact.number;
            }
        else{
            newContact.number = num;
        }
        phoneNumbers.push_back(newContact);
    }
}

private:
string PBname;
vector<Number> phoneNumbers;
};


int main(){
    int entries;
    cin >> entries;
    PhoneBook myFriends;
    myFriends.addNumber(entries);
    myFriends.findNumber();
    return 0;
}

0 个答案:

没有答案