【发布时间】:2014-08-15 20:35:56
【问题描述】:
我正在创建一个创建随机数独表的控制台应用程序。
我在验证表格时遇到了问题(除了仍然需要工作的 3x3 框验证)并且效果很好,但是在 9x9 数独表格的 x 和 y 的这么多循环之后,我得到了给出堆栈溢出错误。我不知道如何阻止这种情况发生。
这是代码:
int Array[9][9];
int validate(int i, int j, int *number){
*number = rand() % 9 + 1;
for (int x = 0; x < 9; x++){ //row validation
if (*number == Array[x][j]){
validate(i,j,number);
}
}
for (int x = 0; x < 9; x++){ //column validation
if (*number == Array[i][x]){
validate(i,j,number);
}
}
return *number;
}
void generate(){
for (int x = 0; x < 9; x++){
for (int y = 0; y < 9; y++){
int *number = new int;
Array[x][y] = validate(x,y,number);
delete number;
}
}
}
int main(){
srand((unsigned int)time(NULL));
generate();
}
我想我要使用动态内存分配,例如malloc 或new?但我不确定如何在 validate() 函数中使用它们,这是我得到堆栈溢出错误的地方。
【问题讨论】:
-
C 不知道
new。您需要使用malloc。 -
不是故意放C的,现在更正了@pzaenger
-
不一致的缩进使这段代码难以阅读。
标签: c++ validation stack-overflow sudoku