这是代码强制的一个问题:
马匹
瓦莱拉要和朋友们一起去参加聚会。他跟随时尚潮流已经有一段时间了,他知道穿各种颜色的马蹄铁很受欢迎。瓦莱拉去年还剩下四只马蹄铁,但可能有些马蹄铁的颜色与去年的马蹄铁相同。在这种情况下,他需要去商店买几个马蹄铁,而不是在他时尚的同志面前丢脸。
幸运的是,这家商店在阳光下出售各种颜色的马蹄铁,瓦莱拉有足够的钱购买其中的任何四种。然而,为了节省开支,他想花尽可能少的钱,所以你需要帮助瓦莱拉,并确定他需要购买的马蹄铁的最低数量,以穿四种不同颜色的马蹄铁参加聚会。输入
第一行包含四个空格分隔的整数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'发布于 2021-08-26 09:28:57
只需稍微修改一下代码,就可以计算不同数字的数量和输出4 - count。
#include <iostream>
using namespace std;
int main()
{
//input
int input[4];
int i, j, count = 1;
for (i = 0; i < 4; i++) {
cin >> input[i];
}
for (i = 1; i < 4; i++) {
for (j = 0; j < i; j++) {
if(input[i] == input[j]) break;
}
if(i == j) count++;
}
cout << (4-count);
return 0;
}在强制码中接受。
发布于 2021-08-26 08:03:46
代码的一个稍微优化的版本:
#include <iostream>
using namespace std;
int main()
{
//input
int input[4];
int i, j, count = 0;
bool done = false;
for (i = 0; i < 4; i++) {
cin >> input[i];
}
for (i = 0; (i < 3) && (!done); i++) {
for (j = i+1; (j < 4) && (!done); j++) {
if (input[i] == input[j]) {
count += 1;
done = count == 3;
}
}
}
cout << count;
return 0;
}https://stackoverflow.com/questions/68934560
复制相似问题