事象的宏图吧 关注:4,421贴子:82,228

回复:一个小玩意,地锁

只看楼主收藏回复

2d的填入顺序0,1,10,11,2,20,12,21,22,3,30,13,31,23,32,33应该可以最大程度剪枝...还有我用的是python,python的速度...


来自iPhone客户端53楼2014-08-01 15:30
回复

    能不能这么走 先走边界 再走内容
    这样的话 需要验证的会少一点?
    树状的思路 不知道可不可以
    向左和向右的边界的线只需验证一位数字
    然后里面的线只需要验证两位数字
    不具备任何代码能力的我想出的 ,不要太认真


    54楼2014-08-01 15:56
    收起回复
      **************************
      突然感觉枚举法直接了当
      直接枚举先全排列16!
      然后验证24个接口是否一一对应
      如果有不对应的话直接放弃
      对应的话输出

      这样 比较的次数不超过16!*24 排列的种类是16!
      当然排列的种类比上面的情况多
      上面那种应该不超过16*(8^6)*(4^9)=2^40 比16!小吧


      55楼2014-08-01 16:49
      收起回复
        话说脑洞略大的我又想出来一个奇葩的方法
        基于上面的回溯法
        四位二进制数字 依次对应 上左下右(顺序其实不影响最后的结果的)
        还是按那个路径走
        我们建立3种8个表(数组就好)
        1.右边为0的数a 右边为1的数b 8个元素
        2.下边为0的数c 下边为1的数d 8个元素
        3.下右边为00的数e 下右边为01的数f 4个元素
        下右边为10的数g 下右边为11的数h 4个元素

        (树状下行时每一次选项的表都要暂存或是通过算法能够从删掉的表中补充进去原来的)保存下来也不多就16个分叉 16个对应的表
        从1.种表中选取一个元素作为16号位
        从所有表中删去16号位的元素(如果有)
        然后看15号位读取16号位的元素的左边数(即二进制数第4位) 它满足1.种表中的其中一个选取对应那个表中的一个数填进去然后从所有表中删掉那个数
        其中如果某个表为空后还要读取就宣布渲染失败回溯至上一个分叉读取当前分叉的表选择另外一个数填进去(剪枝)
        14 13号亦然 12 8 4号是下边 11 10 9 7 6 5 3 2 1号是下右边
        成功渲染出一种表达 输出
        然后回溯至上一个分叉选择不同的数如果选择完毕的话就继续回溯
        当回溯到第零个分叉时停止 最终实现全部的解
        回溯的时候表怎么办??应该也要读取成当前分叉的表
        如同撤销一样每次回溯都把低一级的分叉的表和选项剪掉只留下上级分叉的记录保存
        逻辑结构好乱 但是理论上应该可以实现复杂度应该比枚举低吧
        某不科学の我想出的不科学の方法············


        56楼2014-08-01 16:55
        收起回复
          求挑战!平面全部输出记录16+s


          IP属地:美国来自手机贴吧57楼2014-08-02 13:02
          收起回复
            打算公布源码←_←


            IP属地:美国来自手机贴吧58楼2014-08-02 13:04
            收起回复
              @E是mc2 给你8组
              12 4 3 11 2 10 13 5 9 1 6 14 7 15 8 0
              14 12 1 3 0 2 15 13 11 9 4 6 5 7 10 8
              12 1 6 11 2 15 8 5 9 4 3 14 7 10 13 0
              14 9 4 3 0 7 10 13 11 12 1 6 5 2 15 8
              13 0 7 10 6 11 12 1 8 5 2 15 3 14 9 4
              15 8 5 2 4 3 14 9 10 13 0 7 1 6 11 12
              13 5 2 10 6 14 9 1 8 0 7 15 3 11 12 4
              15 13 0 2 4 6 11 9 10 8 5 7 1 3 14 12
              告诉我哪些可以。。。剩下的全部是旋转和对称变换


              IP属地:美国61楼2014-08-02 17:47
              收起回复
                3d 填入顺序:0,1,10,11,100,101,110,111,2,12,102,112,20,120,21,121,22,122,200,201,210,211,202,212,220,221,222,3,13,103,113,203,213,23,123,223,30,130,230,31,131,231,32,132,232,33,133,233,300,301,310,311,302,312,320,321,322,303,313,323,330,331,332,333
                总觉得哪里错了...


                62楼2014-08-02 17:52
                收起回复
                  你们还在研究呢啊←_←


                  IP属地:浙江来自Android客户端63楼2014-08-03 14:56
                  收起回复
                    不觉得n维的自然推广是边长为4的4^n个方格填1-4^n,然后规则同二维吗……


                    IP属地:美国64楼2014-08-04 18:25
                    收起回复
                      跑了两天得出的一组3d
                      0 1 8 51 2 32 48 28 10 34 40 39 54 44 42 63 3 4 9 38 6 5 36 37 7 17 25 19 49 24 26 58 11 14 15 18 12 23 21 16 27 35 33 56 50 52 60 62 13 30 31 46 29 59 43 47 45 22 20 61 41 55 53 57
                      ————————————————————————————
                      因为ramdisk 满了所以只有393MB的数据,剩下全部丢失了_(:з」∠)


                      65楼2014-08-06 00:56
                      收起回复
                        C++要交论文,请对一道你自己专业的问题进行研究…………
                        突然脑洞大开,想到了当初这道题;
                        咱想用一下这个模型,可以吗?~~~
                        @E是mc2
                        当然,代码什么的咱自己慢慢搞吧…………(其实是s_wordfeng的那个看不懂什么的我会乱说?)
                        我去,我第二行自然而然地在最后加了个分号是几个意思…………难道最近码代码码的太多了…………捂脸
                        三维你们弄出来了吗…………看到了楼上好像很厉害的样子,我表示:
                        有(wan)点(quan)理(bu)解(dong)
                        嗯,话说这又是挖坟吧…………挖坟专业户…………


                        66楼2015-05-28 09:32
                        收起回复
                          5.28搞出来了算法,200+行,只用到了最基本的条件语句、数组和循环语句……连指针和类都没用……
                          运算时间800+s…………并不知道如何才能提高运算速度…………
                          基本思想就是从右下角z字形搜索+回溯
                          大神们(@s_wordfeng )求包养。怎么优化运算速度……16s+是如何办到的……
                          什么多线程XXX都是什么鬼……嗯,就我目前的知识来看有什么优化的方法
                          实际运行的时候这个程序只占用了10%不到的CPU和几乎没有的内存,感觉肯定有办法让它占用的多一点……这样应该就会快点?
                          实际上在算法的实现上也有地方可以优化,很多次比较是无意义的,但我不知道简化的算法该怎么变成代码……
                          比如c[i][j][16],明明只需要从第k位开始生成,我却是全部生成,然后比较前k位是否与预定的相同……
                          因为不知道部分穷举的算法怎么写……
                          已有知识:指针,类,文件流,模板,链表,二叉树,队列,栈,图……然后就没了
                          链接: http://pan.baidu.com/s/1sjG7lYP 密码: u3km


                          69楼2015-05-30 21:15
                          收起回复
                            我写了一个只计数没输出的,五秒就出来正确的数目了,不知道是不是输出到文件拖时间?


                            IP属地:美国70楼2015-06-07 18:13
                            收起回复
                              代码:http://pan.baidu.com/s/1eQIVTQE
                              @renren1260
                              平台:Ubuntu 14.10, gcc 4.9.1
                              硬件:i5 3317U和某ssd(后面应该没啥用)


                              IP属地:美国71楼2015-06-07 19:05
                              收起回复