官方题解|比赛结果
2024-08-12 00:02:28
发布于:广东
26阅读
0回复
0点赞
题目解析
我们可以使用一个 std::string
数组 mat
来存储比赛对局的情况。
然后使用一个二重循环遍历这个 std::string
数组 mat
,对于每个 ,检查 mat[i][j]
和 mat[j][i]
是否存在矛盾;
若根据题目检查发现矛盾则直接输出 incorrect
,并使用 return 0
直接退出程序( 可以使用 exit(0)
)。
若执行完整个二重循环后,并没有退出程序,则说明比赛结果是正确的,输出 correct
即可。
语法小课堂
-
std::vector
可以当作普通的数组来使用,在效率上几乎与普通数组相当,而且操作和功能更为强大。 -
基于范围的
for
循环:使用for (auto x : mat)
可以方便地遍历许多 容器。类似于 中的for x in mat:
。 -
此处使用的
for (auto &x : arr)
多了一个&
为 引用,表示可以对mat
中的元素进行直接修改,而不加&
则仅为复制(值传递)
。
AC代码
C++
代码:
#include <bits/stdc++.h>
int main() {
int n;
std::cin >> n;
std::vector<std::string> mat(n);
for (auto &x : mat)
std::cin >> x;
for (int i = 0; i < n; ++i)
for (int j = 0; j < n; ++j) {
char a = mat[i][j], b = mat[j][i];
if (a == 'W' and b != 'L' or
a == 'L' and b != 'W' or
a == 'D' and b != 'D') {
std::cout << "incorrect" << '\n';
return 0;
}
}
std::cout << "correct" << '\n';
return 0;
}
Python
代码:
n = int(input())
mat = [input() for i in range(n)]
for i in range(n):
for j in range(n):
a, b = mat[i][j], mat[j][i]
if a == 'W' and b != 'L' or\
a == 'L' and b != 'W' or\
a == 'D' and b != 'D':
print("incorrect")
exit(0)
print("correct")
这里空空如也
有帮助,赞一个