冥思苦想了一天也没想出来,求诸位大神给个代码思路! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nichan
V2EX    问与答

冥思苦想了一天也没想出来,求诸位大神给个代码思路!

  •  
  •   nichan 2013-01-17 01:05:04 +08:00 3879 次点击
    这是一个创建于 4735 天前的主题,其中的信息可能已经有所发展或是发生改变。
    假设,现在有7颗种子,依次编号为1到7。

    将它们全部种下去后,3号种子结了5颗新种子,7号种子结了2颗新种子,其他种子均未结种。

    分别将3号种子结出的5颗新种子命名为31,32,33,34,35。7号种子结出的2颗新种子命名为71,72(即先代的种子id加上本代的种子id)。

    又分别将31,32,33,34,35和71,72种下去,其中31结出了3颗新种子,分别命名为311,312,313。

    最后将统计到这样一个数组
    {1,2,3,31,311,312,313,32,33,34,35,4,5,6,7,71,72}

    其中,每一代的哪一颗种子是否结种,结多少种与概率无关,均为事先指定好,也就是说在我种下第一批种子之前,改批种子一共能够产生多少后代,哪颗种子能够产生后代已经被提前确定了(只是我还需要“种”这个“函数”才能得知结果)

    现已知有N颗种子,如何写循环才能够得到上述形式的数组?(假设“种”函数会返回一个包含子代id的数组)

    万分感谢!!!
    13 条回复    1970-01-01 08:00:00 +08:00
    CoX
        1
    CoX  
       2013-01-17 01:10:56 +08:00   1
    嵌套调用呗,跟遍历文件夹下的文件一个思路吧
    alexrezit
        2
    alexrezit  
       2013-01-17 01:16:47 +08:00   1
    Recursion...
    alexrezit
        3
    alexrezit  
       2013-01-17 01:24:02 +08:00
    @alexrezit
    如果你不在意性能的话...
    txx
        4
    txx  
       2013-01-17 02:07:24 +08:00 via iPhone   1
    dfs bfs 都可以

    我更喜欢bfs一些
    endyul
        5
    endyul  
       2013-01-17 12:27:37 +08:00   1
    用“种”函数构造个树再先根遍历一下
    Hua
        6
    Hua  
       2013-01-17 14:07:51 +08:00 via iPhone   1
    txx +1
    013231
        7
    013231  
       2013-01-17 14:13:09 +08:00   1
    @txx 如果是形成主出的那用DFS啦.
    txx
        8
    txx  
       2013-01-17 16:32:54 +08:00
    @013231 bfs 加一个 字符串的sort 也可以嘛。。。 虽说dfs更短小简洁一些...
    Sunyanzi
        9
    Sunyanzi  
       2013-01-17 17:02:55 +08:00   1
    <?php
    // Sunyanzi @V2EX

    /* make a flowerpot ... */
    $flowerpot = [];

    /* we have 7 seeds at first ... */
    seeding_time( $flowerpot, 0, 7 );

    /* simple output ... */
    echo( implode( ' ', $flowerpot ) );

    /* main function ... using Recursion which is @alexrezit's favourite ... */
    function seeding_time( &$ret, $prefix, $number ) {

    /* the seeds we planted can sprouted ... */
    static $seeds = [
    3 => 5,
    7 => 2,
    31 => 3
    ];

    /* seeding in progress ... */
    for ( $i = 1; $i <= $number; ++ $i ) {

    /* most easy way to get seed number ... */
    $s = intval( $prefix . $i );

    /* push into result ... */
    $ret[] = $s;

    /* we have magic on this seed ..? */
    if ( isset( $seeds[$s] ) )
    seeding_time( $ret, $s, $seeds[$s] );

    }

    /* we have done ... */
    return;

    }


    // --------------------------------------------------
    // DEMO OUTPUT
    // --------------------------------------------------
    // 1 2 3 31 311 312 313 32 33 34 35 4 5 6 7 71 72
    // --------------------------------------------------
    Sunyanzi
        10
    Sunyanzi  
       2013-01-17 17:06:04 +08:00
    花了大概五分钟顺手一写效率没优化 ...

    说来 ... 看到自己的代码变成这样黑乎乎的一陀还真不是个好受的事情啊 ...
    leohxj
        11
    leohxj  
       2013-01-17 22:29:00 +08:00   1
    @Sunyanzi 用Gist
    Sunyanzi
        12
    Sunyanzi  
       2013-01-18 10:27:35 +08:00
    @leohxj 用 Gist 的话这个帖子加载的时候会卡住卡半天 ...

    体验不好的说 ...
    nichan
        13
    nichan  
    OP
       2013-01-20 23:05:54 +08:00
    非常感谢各位。。。最后还是用了递归解决问题。。。
    果然之前学到的还是都还给老师了吧。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3735 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 05:11 PVG 13:11 LAX 21:11 JFK 00:11
    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