我需要交换一个可变长度的2d数组但由于某种原因,当调用交换元素的函数时,它返回false。交换代码对我来说似乎合乎逻辑它不起作用。这是代码片段。
bool swap(int tile)
{
for(j = 0; j < d; j++)
{
if (game[i][j]==tile && game[i][j + 1]==0)//swap tile left of zero
{
a = game[i][j +1];
b = game[i][j] ;
int temp = a;
a = b;
b = temp;
game[i][j] = a;
game[i][j+1] = b;
}
}
}
这里有什么问题,我该如何纠正。原因与解决指南同样重要。非常感谢!
答案 0 :(得分:1)
你正在进行双重交换,实际上根本没有交换。
由于您已经知道game[i][j+1]
的值为零,因此非常简单。你所要做的就是
game[i][j+1] = game[i][j];
game[i][j] = 0;
答案 1 :(得分:0)
你没有任何回报
您应该执行以下代码
bool swap(int tile)
{
bool worked = false;
for(j = 0; j < d; j++)
{
if (game[i][j]==tile && game[i][j + 1]==0)//swap tile left of zero
{
int temp = game[i][j +1];
game[i][j+1] = game[i][j];
game[i][j] = temp;
worked = true;
}
}
return worked;
}