Hello大家好我是小亦也是好久没写题解了这次也来水一下入门题吧这道题呢来源于【MX-J4】梦熊周赛 · 入门组 4 & RiOI Round 4(同步赛)的题目,这道题也是AC了所以也来水水吧(已经够水了刚才说的)话不多说思路: 这个程序我首先定义了一个checkLine函数,用于检查一个给定的行或列是否全部为1(其实也没必要搞那么复杂的定义但是我就是喜欢这样(一身反骨))。然后在isBingo函数中,我们检查棋盘上的所有行、列以及两条对角线。如果找到任何一条线全部为1,则函数返回true,表示棋盘是宾果的。在main函数中,我们读取棋盘的输入,并调用isBingo函数来检查是否是宾果,然后输出相应的结果。额(这就是我大概的思路有错的可以纠正哈(#^.^#))代码的话(还是给吧复杂的就不给简单的(反骨)额就是发一下东西复杂了一点定义也是(#^.^#)(另外注释也写了ing)
————————————————
#include <bits/stdc++.h>//非常喜欢用万能头因为它万能
using namespace std;
bool checkLine(const vector<int>& line) {
for (int num : line) {
if (num == 0) {
return false;
}
}
return true;
}
bool isBingo(const vector<vector<int>>& board) {
// 检查每一行
for (const auto& row : board) {
if (checkLine(row)) {
return true;
}
}
// 检查每一列
for (int j = 0; j < 5; ++j) {
vector<int> column;
for (int i = 0; i < 5; ++i) {
column.push_back(board[i][j]);
}
if (checkLine(column)) {
return true;
}
}
// 检查主对角线
if (checkLine({board[0][0], board[1][1], board[2][2], board[3][3], board[4][4]})) {
return true;
}
// 检查反对角线
if (checkLine({board[0][4], board[1][3], board[2][2], board[3][1], board[4][0]})) {
return true;
}
return false;
}
int main() {
vector<vector<int>> board(5, vector<int>(5));
for (int i = 0; i < 5; ++i) {
for (int j = 0; j < 5; ++j) {
cin >> board[i][j];
}
}
if (isBingo(board)) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}