请问一个算法题,关于填格子的。 - V2EX
stefanzweig

请问一个算法题,关于填格子的。

  •  
  •   stefanzweig Nov 21, 2012 4135 views
    This topic created in 4923 days ago, the information mentioned may be changed or developed.
    大家好。非常冒昧到这里来问一道算法题。

    我有一个棋盘,10×10大小的。现在我要依次在格子内放棋子,棋子有编号的,1 到 100。

    要求是:
    1. 编号为1的棋子只能放在最左上角的格子里。接下里一次放相应编号的棋子。
    2. 接下来的棋子可以水平相隔两个格子或者竖直相隔两个格子放入。或者……
    3. 接下来的棋子可以在对角线的线路上放,和上次的棋子相隔一个格子。
    4. 目的是100个棋子都能放进棋盘。

    问题是按照这个规则能有多少种结果。用程序怎么实现呢?

    我自己简化过问题到5×5,包括可以重复的组合一共有500+种结果。但是同样的程序跑6×6已经一个多小时出不来结果了。我想知道在算法上应该选择什么样的策略。谢谢。
    4 replies    1970-01-01 08:00:00 +08:00
    laskuma
        1
    laskuma  
       Nov 22, 2012
    要求有点没看懂 2 3条件是任何时刻选一个满足?还是说只能交替满足?另外3有点没看懂
    laskuma
        2
    laskuma  
       Nov 22, 2012
    我算法不好…问了@abccb1 表示用DFS或者直接数学方法解
    fanzeyi
        3
    fanzeyi  
       Nov 22, 2012
    感觉可能是动态规划,目测不在能力范围内

    大概想了下状态 f[i][j] 表示 (i,j) 格子(左上为 (0,0))的结果..

    === 以上删除 ===

    尝试写动态转移方程的时候发现,还可以竖直放,也就是说第 (i,j) 格子可以从 (i+1,j)个格子放过来…… 所以不满足动态规划的无后效性……

    或者是比较高级的动态规划…… 不会呢

    (其他同学继续想吧…… )
    qiukun
        4
    qiukun  
       Nov 22, 2012
    将起点和终点连接起来。就是寻找汉密尔顿回路的问题。http://zh.wikipedia.org/zh/%E5%93%88%E5%AF%86%E9%A1%BF%E5%9B%BE
    baidu之下,木有求总数的算法(实际上只能构造出特定的回路的样子)。
    About     Help     Advertise     Blog     API     FAQ     Solana     3019 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 07:15 PVG 15:15 LAX 00:15 JFK 03:15
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86