我对"team"代码强制任务有问题,不明白为什么我的 c++ 代码确实有效并且不起作用


#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;   // number of problems
int solvableProblems = 0;
char matrix[n][3];
int count = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < 3; j++) {
cin >> matrix[i][j];
}   
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < 3; j++) {
if (j == 1) {
count++;
}
}
if (count >= 2) {
solvableProblems++;
}   
}
cout << solvableProblems;

return 0;
}

任务名称是";团队;在codeforces上,这看起来是一个简单的问题,但我的代码在第五次测试中不起作用。我们需要找出一组人能解决多少任务(如果有2个或更多的数字1,他们就能解决,如果更少,他们就不能。输入是:

5
1 0 0
0 1 0
1 1 1
0 0 1
0 0 0

输出应该是1(因为只有一行的数字超过了1的2位,但如果我没有错的话,它给了我4。找不到错误,你能帮我吗?

这是因为您要检查j是否等于1,而不是检查输入中的值是否等于1。将if(j == 1)更改为if(matrix[i][j] == 1)。此外,您需要在外部for循环中设置count = 0(在if(count >= 2)块之后(,否则您的计数将继续增加。

编辑:正如Johnny Mopp所指出的,您使用了char矩阵而不是int。现在了解到,字符存储在C/C++中作为其ASCII值,这意味着(char)1存储为49。你可以通过两种方法来解决这个问题:

  1. 将矩阵声明为int。这将导致输入被存储为1,因此比较将导致计数的增加
  2. 在不更改声明的情况下,使用if(matrix[i][j] == '1')进行比较。这导致将char 1与char 1进行比较,即49等于49。再次,您的计数将递增

这是我在Python 3中的答案(Codeforces接受的答案(

n = int(input())
x=0
for i in range(n):
p, v, t = input().split()
p, v, t = [int(p), int(v), int(t)]
if (p+v+t)>1:
x+=1
print(x)

只要看看我在Python中所做的算法,而不是在C++中。

最新更新