我正在开发一个生成随机网格、拉丁方格和数独的程序。我正在研究拉丁方格,除了我处于连续循环中之外,几乎所有这些都可以正常工作。如果我把它们分开,它们就可以正常工作。可能有一些小事情我做错了,我找不到它。你能看出哪里不对吗?
编辑:对于那些不知道拉丁方是什么的人(如果有人不知道),它通常是一个 9x9 网格,在行和列中都没有重复。
更新:我在 if(notSame) 语句之前发现了 notSame 等于 true 的问题。它总是等于 true,所以不会完成检查行。现在,当我运行时,它不再处于连续循环中,而是行没有重复,但列仍然存在。
更新#2:我现在重做了很多列的编码。我的教授要求我改变一些事情,但它仍然让我陷入一个连续的循环。
int row = 0, col = 0, count = 0;
bool notSame = true;
// setting up rows and columns
for (row = 0; row < grid.GetLength(0); row++)
{
for (col = 0; col < grid.GetLength(1); col++)
{
grid[row, col] = rnd.Next(1, 10);
//for loop to check rows for repeats
for (int c = 0; c < col; c++)
{
// if there is repeat go back a column and set bool = false
if (grid[row, col] == grid[row, c])
{
col--;
count++;
notSame = false;
break;
}
//notSame = true;
}
// if bool = true loop to check columns for repeats
if (notSame)
{
for (int r = 0; r < row; r++)
{
// if repeat then go back row
if (grid[row, col] == grid[r, col])
{
notSame = false;
count++;
break;
}
}
if (notSame == false && count <= 50)
{
row--;
//break;
}
else if (notSame == false && count > 50)
{
count = 0;
col = 0;
row = 0;
break;
}
}
}
}
我正在使用一个称为网格的二维数组。