将switch语句转换为更优雅的解决方案


易米烊光
2025-03-11 05:01:44 (28天前)


我有一个9 x 9矩阵。 (想想suduko)。

4 2 1 6 8 1 8 5 8
3 1 5 8 1 1 7 5 8
1 1 4 0 5 6 7 0 4
6 2 5 5 4 4 8 1 2
6 8 8 2 8 1 6 3 5
8 4 2 6 4 7 4 1 1
1 3 5 3 8 8 5 2 2


4 条回复
  1. 0# 一瓶泡沫 | 2019-08-31 10-32



    Python中常见的模式是使用a

    字典

    来图:




    1. qmap = {
      1: (0, 3),
      2: (3, 6),
      3: (6, 9),
      }

    2. print qmap.get(qnum, (0, 0))

    3. </code>


    我确信C#支持类似的东西。


  2. 1# 至此 | 2019-08-31 10-32



    对于一般解决方案(即:NxN网格),我会使用一些数学(你需要模运算符)。



    如果您总是使用9x9数独网格,那么您可以预先计算答案并将它们粘贴在地图或数组中。



    当然,您可以将这些想法结合起来并在init()函数中预先计算答案,然后将它们存储在地图中。


  3. 2# trpnest | 2019-08-31 10-32



    除非我遗漏了什么,为什么不做数学呢?所有的拳头,只有商店

    rowBegin



    colBegin




    现在,只需发出:




    1. rowBegin = (rnum-1)3
      colBegin = (qnum-1)
      3

    2. </code>


    这映射1 - &gt; 0,2 - &gt; 3,和3-> 6。



    现在,你循环

    colBegin



    colBegin + 3

    ,和

    rowBegin



    rowBegin + 3

    。您的默认行为真的有必要吗?如果是,特殊情况时

    rnum < 1 || rnum > 3



    qnum < 1 || qnum > 3


登录 后才能参与评论