我正在尝试解决TopCoder的AdvertisingAgency问题。当我提交此代码并运行系统测试时,它显示程序未通过系统测试。 Hovewer当我从测试面板运行测试时,它通过所有这些测试。你知道问题出在哪里吗?
源代码:
#include<iostream>
#include<vector>
using namespace std;
class AdvertisingAgency{
public:
int numberOfRejections(vector<int>requests){
int rejections=0;
bool billboards[100];
for(int request:requests){
if(billboards[request]){
rejections++;
}
else{
billboards[request]=true;
}
}
return rejections;
}
};
答案 0 :(得分:1)
首先你使用了未初始化的数组,即UB。并且如问题中所述,广告牌编号为1到100.您可以将该数字直接用作数组索引,但数组基于零,因此您的范围超出问题,这也会导致UB:
std::vector<bool> billboards( 100 ); // unlike array vector will be properly initialized
for(int request:requests) {
auto &board = billboards[request-1]; // index is zero based
rejections += board;
board = true;
}
答案 1 :(得分:0)
感谢你解决了这个问题! 我添加了&#39; for&#39;在函数开头将billboards值设置为false,它有助于:)
#include<iostream>
#include<vector>
using namespace std;
class AdvertisingAgency{
public:
int numberOfRejections(vector<int>requests){
int rejections=0;
bool billboards[101];
for(int i=0;i<101;i++){
billboards[i]=false;
}
for(int request:requests){
if(billboards[request]){
rejections++;
}
else{
billboards[request]=true;
}
}
return rejections;
}
};