You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

数独棋盘生成程序行列重复数字问题求助

数独棋盘生成程序调试求助

我正在开发一款生成游戏用完整数独棋盘的程序,目前已实现3×3小网格内无重复数字,但大网格的行和列仍存在重复数字。程序运行问题截图:
存在行和列重复数字的数独棋盘

代码说明

  • gameGrid是包含9个数组的二维数组,每个数组含9个元素
  • btnGrid是gameGrid的镜像,用于GUI按钮
  • gridXX指代数独棋盘上的各个3×3小网格

我认为问题出在代码的行与列检查部分,附上程序代码如下,恳请各位提供调试帮助:

private void generateBtn_Click(object sender, EventArgs e){
    Random r = new Random();
    //Row and Col max is one less as arrays start at 0
    int rowMax = 9;
    int colMax = 9;

    for (int i = 0; i < rowMax; i++)
    {
        for (int j = 0; j < colMax; j++)
        {
            bool checking = false;
            bool foundSame = false;
            while (checking == false)
            {
                foundSame = false;
                string num = r.Next(1, 10).ToString();
                Debug.WriteLine(num);
                //check row
                for (int k = 0; k < rowMax; k++) {
                    if (gameGrid[i,k] == num) {  foundSame = true; break; }
                    if (gameGrid[i,k] == "") { break; }
                }
                //check col
                for (int k = 0; k < colMax; k++)
                {
                    if (gameGrid[k,j] == num) { foundSame = true; break; }
                }
                //check square
                if (grid00.Contains(btnGrid[i, j])) { foundSame = checkIfContains(grid00, num); }
                if (grid10.Contains(btnGrid[i, j])) { foundSame = checkIfContains(grid10, num); }
                if (grid20.Contains(btnGrid[i, j])) { foundSame = checkIfContains(grid20, num); }

                if (grid01.Contains(btnGrid[i, j])) { foundSame = checkIfContains(grid01, num); }
                if (grid11.Contains(btnGrid[i, j])) { foundSame = checkIfContains(grid11, num); }
                if (grid21.Contains(btnGrid[i, j])) { foundSame = checkIfContains(grid21, num); }

                if (grid02.Contains(btnGrid[i, j])) { foundSame = checkIfContains(grid02, num); }
                if (grid12.Contains(btnGrid[i, j])) { foundSame = checkIfContains(grid12, num); }
                if (grid22.Contains(btnGrid[i, j])) { foundSame = checkIfContains(grid22, num); }


                if (foundSame == false)
                {
                    checking = true;
                    gameGrid[i,j] = num;
                    btnGrid[i,j].Text = num;
                    
                }
            }
            
            
        }
    }
}

内容的提问来源于stack exchange,提问作者EpicAshman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 17:34:51