我正在研究骑士之旅问题,并且想定义一个类,但是在初始化用户定义的数组时遇到了麻烦。因此,用户从命令行输入的argvs
是棋盘长度 mX 和 nY;和一个起始位置(x,y)。所以基本上,我如何初始化用户定义的数组?
第一个问题:在public
部分中,声明是否正确int ** tour
?
第二个问题:如何tour
在同一个类中的以下函数中引用数组?
第三个问题: 中main
,我调用K.knight
了用户指定的维度数组进行初始化,但是没有初始化。如何在main
使用该函数时初始化一个数组K.knigt()
,并能够在下面的函数中使用该数组K.knightfunc()
?
class Ktour{
public:
int xSize; //m
int ySize; //n
int ** tour; //array to be initialized
int solutionsCount; //tracking solutions
int position; //position count, from 0 to m * n -1
// initialize tour matrix
void knight(int M, int N) {
position = 1;
solutionsCount = 0;
xSize = M;
ySize = N;
tour = new int * [xSize];
for (int i = 0; i < xSize; i++) {
for (int j = 0; j < ySize; j++) {
tour[i][j] = 0;
std::cout << tour[i][j] << std::endl;
}
}
}
....some other functions defined in between...
....
....
};
...
// main
int main(int argc, char *argv[])
{
Ktour K;
//user inputs chessboard length mX and nY; and a starting position(x,y)
int mX = atoi(argv[1]);
int nY = atoi(argv[2]);
int x = atoi(argv[3]);
int y = atoi(argv[4]);
//initialization
K.knight(mX, nY);
//run the recursive function;
K.knightFunc(x,y);
return 0;
}