gpt4 book ai didi

c++ - 如何检查矩阵的任何行是否包含所有 'A' s?

转载 作者:行者123 更新时间:2023-12-04 08:18:46 25 4
gpt4 key购买 nike

我一直在尝试这样做,但问题是最终结果总是有问题或缺失。
我有很多 if 语句,我想看看是否可以通过使用 for 循环来减少它。

char matrix[3][3] = {
{'A','A','A'},{'B','A','B'},{'C','A','C'}
};

if (matrix[0][0] == 'A' && matrix[0][1] == 'A' && matrix[0][2] == 'A') {
cout << "Found!" << endl;
}
还有很多 if 语句,我没有把它放在这里,因为它是同一件事,只是索引不同。
我试着做一个这样的 for 循环,
for (int i = 0; i < matrix[0][2]; i++) {
if (matrix[0][0] == matrix[0][1] && matrix[0][0] == matrix[0][2])
cout << "Found!" << endl;
break;
}
与将近 20 行 if 语句相比,这看起来更有条理,但它仍然缺少某些部分。
例如在数组 [0][1] 中和 [1][1][2][1]都有字 'A' .
当同一字符垂直或水平出现在同一行中时,如何将其实现到 for 循环中以打印出消息。

最佳答案

您可以使用标准算法来方便地表达这一点:

if (std::any_of(std::begin(matrix), std::end(matrix), 
[](auto const & row) {
return std::all_of(std::begin(row), std::end(row),
[](char c) {
return c == 'A';
});
}))
{
std::cout << "Found";
}
从 C++20 开始,这变得更容易阅读和编写:
namespace rs = std::ranges;
if (rs::any_of(matrix, [](auto const & row) {
return rs::all_of(row, [](char c) {
return c == 'A';
});
}))
{
std::cout << "Found";
}
这是一个 demo

关于c++ - 如何检查矩阵的任何行是否包含所有 'A' s?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65587799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com