Rhy*_*hys 2 c++ sudoku switch-statement
我目前正在开发一个Sudoku解决方案项目,通过从初学者到更高级的各种C++技能(一步一步)
我目前需要某种公式/解决方案来计算在数独9x9网格中找到的3x3网格中第一个"单元"的X和Y坐标.
如果数独网格的3x3部分编号如下:
| 0 | 1 | 2 |
| 3 | 4 | 5 |
| 6 | 7 | 8 |
Run Code Online (Sandbox Code Playgroud)
目前,我能想到的最好的是一个开关/案例声明:
switch(cubeNum) {
case 0:
case 1:
case 2:
startY = 0;
break;
case 3:
case 4:
case 5:
startY = 3;
break;
case 6:
case 7:
case 8:
startY = 6;
break;
}
switch(cubeNum) {
case 0:
case 3:
case 6:
startX = 0;
break;
case 1:
case 4:
case 7:
startX = 3;
break;
case 2:
case 5:
case 8:
startX = 6;
break;
}
Run Code Online (Sandbox Code Playgroud)
我迫切需要一个更优雅的数学解决方案(公式/规则)或替换switch/case语句,以使其更高效/更小.
有没有人有什么建议?
编辑 我觉得我可能被误解了.考虑下面的图片:

我试图返回绿色的单元格的X和Y,由它们对应的大灰色数字选择.
startX = (cubeNum % 3) * 3;
startY = (cubeNum / 3) * 3;
Run Code Online (Sandbox Code Playgroud)
3可以用n这里代替你有n*n板.
(cubeNum / 3)如果由于某种原因cubeNum浮动,你将不得不申请楼层.