【发布时间】:2020-07-15 20:25:56
【问题描述】:
我正在处理的问题是来自 HackerRank 的“生日蛋糕蜡烛”。
基本上,程序接受输入,然后输出最大输入的输入次数。
例如,如果输入可以是:
4
3 2 1 3
4 将是数组中的元素数。 3 2 1 3 将是数组中的元素。
输出将是 2,因为 3(最大)重复了 2 次。
这是我的代码:
#include <iostream>
using namespace std;
int main() {
long long num;
cin >> num;
long long arr[num];
for (int i = 0; i < num; i++) {
cin >> arr[i];
}
long long qwer{};
//find the largest value
for (int i = 1; i<num; i++) {
if (arr[0] < arr[i]) {
arr[0] = arr[i];
if (arr[0] == arr[i]) {
arr[0] = arr[i];
}
}
qwer = arr[0];
}
long long howmany = 0;
//find how many times the largest value is repeated
for (int i = 0; i<num; i++) {
if (arr[i] == qwer) {
howmany += 1;
}
}
cout << howmany;
return 0;
}
我的代码为上述测试用例提供了正确的输出。但是,对于以下测试用例,输出不正确:
10
18 90 90 13 90 75 90 8 90 43
对于这个测试用例,我的程序输出了 6,而不是 5。
10
44 53 31 27 77 60 66 77 26 36
对于这个测试用例,我的程序输出的是 3,而不是 2。
我的代码有什么问题?
提前致谢。
【问题讨论】:
-
您的代码不是真正有效的 C++,因为 C++ 没有 variable-length arrays。请改用
std::vector。 -
至于你的问题,这通常是通过比赛现场没有教授的东西(不是教学或学习资源)来解决的:调试乙>。使用调试器,您可以逐句逐句执行代码,同时监控变量并查看它们如何变化。
-
@holz 您的代码将 arr[0] 设置为最大值,并且该元素被抵消,尽管最初它不包含最大值。
-
您不需要数组。您可以将其作为运行最大值。
标签: c++ algorithm loops for-loop max