我在我的代码函数中用 3D std::vector 替换了 3D 数组,它在编译时进入了无限循环。如果我使用了 3D 数组 arr[ ][ ][ ],它会完美运行。你能给我一个提示吗,我真的需要使用向量而不是数组。谢谢:)
我的初始代码是:
bool sol(int arr[12][12][13]) {
int row,col;
if(!find_empty(arr,row,col)) return true;
for(int i=1;i< arr[row][col].size();i++) {
if(is_working(arr,row,col,arr[row][col][i]) ) {
arr[row][col][0] = arr[row][col][i];
if(sol(arr)) return true;
arr[row][col][0] = 0;
}
}
return false;
}
我将arr替换为
std::vector<std::vector<std::vector<int> > > vec;
vec.resize(12);
for(int i=0;i<12;i++)
{
vec[i].resize(12);
for(int j=0;j<12;j++)
{
vec[i][j].resize(13);
for(int k=0;k<13;k++)
vec[i][j][k]=table[i][j][k];
}
}
现在它进入了一个无限循环!初始代码没有错误,这是一个简单的回溯。我将arr替换为vec后出现问题。您能给我一些建议吗。对不起第一次发帖!