代码如下所示,值行+ i显然为-1。但是下面的陈述仍然是正确的。问题首先是在放大功能中。
void enlarge(queue<vector<int>> &slv, vector<int> &v, int n)
{
auto row = v.size();
int rec = 0;
for (int i = 0; i < row; ++i)
{
int value = v[i];
rec |= 1 << value;
//int s = (value - row);
if (value - row + i >= 0)
rec |= 1 << (value - row + i);
if (value + row - i < n)
rec |= 1 << (value + row - i);
}
vector<int> vt;
int bitPosi = 0;
while (bitPosi < n)
{
if (!(rec & 1))
{
v.push_back(bitPosi);
slv.push(v);
v.pop_back();
}
rec >>= 1;
bitPosi++;
}
}
答案 0 :(得分:0)
我已经解决了这个问题。发生这种情况是因为row被声明为自动变量,并且被推断为size_t。转换为int时,row失去精度。