【发布时间】:2021-08-26 07:47:23
【问题描述】:
这是代码强制的问题:
Valera the Horse 将和朋友一起去参加派对。他一直 追了一段时间的流行趋势,他知道这很 流行穿不同颜色的所有马蹄铁。瓦莱拉有四个 去年留下的马蹄铁,但也许其中一些有 相同的颜色。在这种情况下,他需要去商店买一些 更多的马蹄铁,不要在他时髦的同志面前丢脸。
幸好这家店在阳光下有卖各种颜色的马蹄铁 瓦莱拉有足够的钱买其中任何四个。然而,为了 为了省钱,他想尽量少花钱, 所以你需要帮助 Valera 并确定最少的人数是多少 他需要购买的马蹄铁才能穿上四个不同颜色的马蹄铁 参加聚会。输入
第一行包含四个空格分隔的整数 s1, s2, s3, s4 (1 ≤ s1, s2, s3, s4 ≤ 109) — 瓦莱拉的马蹄铁颜色。
考虑用整数索引的所有可能的颜色。输出
打印一个整数——瓦莱拉需要的最小马蹄铁数量 买。
示例
Input 1 7 3 3
Output 1
Input 7 7 7 7
Output 3
我的解决方案的输出是正确的,但在测试 19 中有 错误答案。 我的解决方案是:
#include <iostream>
using namespace std;
int main()
{
//input
int input[4];
int i, j, count = 0;
for (i = 0; i < 4; i++) {
cin >> input[i];
}
for (i = 0; i < 4; i++) {
for (j = i+1; j < 4; j++) {
if (count == 3)break;
if (input[i] == input[j]) {
count += 1;
}
}
}
cout << count;
return 0;
}
测试用例 19 是:
Input
147784432 947653080 947653080 947653080
Participant's output
3
Jury's answer
2
Checker comment
wrong answer 1st numbers differ - expected: '2', found: '3'
【问题讨论】:
-
能否请您显示您遇到的错误。这对我来说运行和编译都很好
-
不知道关于 codeforce 的事情我敢打赌这是由于 O(n^2) 时间复杂度而超出了时间限制或类似情况。
-
@zubergu 并非如此,代码具有 O(1) 复杂度,因为输入大小是固定的。 OP 得到“测试 19 的错误答案”
-
@tamara 我建议对 qsn 进行编辑以包含测试用例 19。简而言之,您的代码在这些类型的输入
a b b b中失败。在这里,当 i = 1 时,检查 += 2,当 i = 2 时,检查 += 1 使检查 = 3。在这里,您将最后 b 计数两次。你可以通过跳过相等的元素来避免这种情况。 -
我想一个更简单的策略是计算不同元素的数量,并输出
4 - count。
标签: c++