Во-первых, не
int isEmptyPosition(int x, int y)
{
if(g[x][y] = 0) return true;
return false
}
,
а :
int isEmptyPosition(int x, int y)
{
if(g[x][y] == 0) return true;
return false
}
Во-вторых подобные конструкции по всему коду
можно сжать до:
int isEmptyPosition(int x, int y)
{
return (!g[x][y]);
}
В-третьих:
bool isEmptyPosition(int x, int y)
{
return (!g[x][y]);
}
Возможно так же - стоило определить функцию с inline модификатором, или вообще задефайнить её директивой.
Ну и
принято записывать как инкремент:
Думаю даже в производительности разницы не будет, но это - принято. Конструкция += используется для не единичного прироста.