我已经修改了下面的代码,以进行样本测试,如https://www.testdome.com/for-developers/solve-question/9930
"通过将货车从左侧和右侧连接和脱离货车来构建火车。例如,如果我们从左侧固定货车7开始,然后将货车13安装,则从左侧再次将货车(从左到右(获得两辆货车的组成(13和7(。现在,可以从右侧脱离的第一辆车是7,而第一辆可以从左边脱离的货车为13。实施对这个问题进行建模的火车记录。"
#include <stdexcept>
#include <iostream>
#include <vector>
class TrainComposition
{
//std::vector<int> wagons;
public:
std::vector<int> wagons;
void attachWagonFromLeft(int wagonId)
{
wagons.insert(wagons.begin(), wagonId);
}
void attachWagonFromRight(int wagonId)
{
wagons.push_back(wagonId);
}
int detachWagonFromLeft()
{
int ret = wagons[0];
wagons.erase(wagons.begin());
return ret;
}
int detachWagonFromRight()
{
int ret = wagons[(int)(wagons.size()) - 1];
wagons.pop_back();
return ret;
}
};
#ifndef RunTests
int main()
{
TrainComposition tree;
tree.attachWagonFromLeft(7);
tree.attachWagonFromLeft(13);
std::cout << tree.detachWagonFromRight() << "n"; // 7
std::cout << tree.detachWagonFromLeft() << "n";; // 13
return 0;
}
#endif
测试结果失败了具有大量货车的性能测试:超过时间限制
请帮助解决此失败...
这是我解决此问题的示例代码:
#include <stdexcept>
#include <iostream>
#include <deque>
class TrainComposition
{
public:
std::deque<int> my_train;
void showdq()
{
std::deque <int> :: iterator it;
for (it = my_train.begin(); it != my_train.end(); ++it)
std::cout << 't' << *it;
std::cout << 'n';
}
void attachWagonFromLeft(int wagonId)
{
//std::cout << "Attaching Wagon " << wagonId << " from left!"<< std::endl;
my_train.push_front(wagonId);
}
void attachWagonFromRight(int wagonId)
{
//std::cout << "Attaching Wagon " << wagonId << " from right!"<< std::endl;
my_train.push_back(wagonId);
}
int detachWagonFromLeft()
{
int detachedWagon = my_train.front();
my_train.pop_front();
return detachedWagon;
}
int detachWagonFromRight()
{
int detachedWagon = my_train.back();
my_train.pop_back();
return detachedWagon;
}
};
#ifndef RunTests
int main()
{
TrainComposition tree;
//tree.attachWagonFromLeft(1);
//tree.attachWagonFromLeft(2);
tree.attachWagonFromLeft(7);
tree.attachWagonFromLeft(13);
//std::cout << "Train's Wagon: ";
//tree.showdq();
std::cout << "Detaching " << tree.detachWagonFromRight() << " from rightn"; // 7
std::cout << "Detaching "<< tree.detachWagonFromLeft() << " frim leftn"; // 13
//std::cout << "Train's Wagon After: ";
//tree.showdq();
}
#endif
这是我得到的结果:
Compilation OK
Detaching 7 from right
Detaching 13 frim left
Your score is 100%, perfect!
请注意使用std::cout
(上面的摘要(打印可能会导致以下结果:
Performance test with a large number of wagons: Time limit exceeded
Your score is 67%, nice!