关于如何编写一些代码来检查2D数组中的任何位置是否包含某个变量,我有点困惑。
设想一个8x8的2D数组,每个元素的值都是-1,0或1.我想只在数组中找到-1和1时继续运行代码。
我的问题是我只知道如何遍历整个数组,这样我就可以得到最后一个元素的值并测试它是-1还是1,而不是测试 any 是1或-1。
我希望下面的代码说明了我要做的事情。感谢。
for(int x=0; x<8; x++)
{
for(int y=0; y<8; y++)
{
if(array[x][y] == 1)
{
stop checking
oneExists = true;
}
if(array[x][y] == -1)
{
stop checking
minusoneExists = true;
}
else
{
oneExists = false;
minusoneExists = false;
}
}
if(oneExists==true & minusoneExists==true)
{
return true;
}
else
{
return false;
}
}
答案 0 :(得分:2)
下面的内容可能会起到作用:
oneExists = false;
minusoneExists = false;
for(int x=0; x<8 && ! (oneExists && minusoneExists); x++)
{
for(int y=0; y<8 && ! (oneExists && minusoneExists); y++)
{
if(array[x][y] == 1)
{
oneExists = true;
}
if(array[x][y] == -1)
{
minusoneExists = true;
}
}
}
return oneExists && minusoneExists;
答案 1 :(得分:1)
这个怎么样:
bool oneExists = false;
bool minusoneExists = false;
for(int x=0; x<8; x++)
{
for(int y=0; y<8; y++)
{
if(array[x][y] == 1)
{
oneExists = true;
}
else if(array[x][y] == -1)
{
minusoneExists = true;
}
if(oneExists && minusoneExists) return true;
}
}
return false;
答案 2 :(得分:0)
怎么样。
for(int x=0; x<8; x++)
{
bool flag=true;
for(int y=0; y<8; y++)
{
if(array[x][y]==0)
{
flag=false;
break;
}
}
if(!flag)
return false;
}
return true;
答案 3 :(得分:0)
使用标准库:
bool contains(const int (&m)[8][8], int value)
{
return std::any_of(std::begin(m), std::end(m), [value](const auto&a)
{
return std::any_of(std::begin(a), std::end(a), [value](int e)
{
return e == value;
});
});
}
bool contain_one_and_minus_one(const int (&m)[8][8])
{
return contains(m, 1) && contains(m, -1);
}