美文网首页
击鼓传花问题

击鼓传花问题

作者: gaaraZH | 来源:发表于2019-08-05 22:58 被阅读0次

击鼓传花

题目

学校联欢晚会的时候,为了使每一个同学都能参与进来,主持人常常会带着同学们玩击鼓传花的游戏。游戏规则是这样的:n个同学坐着围成一个圆圈,指定一个同学手里拿着一束花,主持人在旁边背对着大家开始击鼓,鼓声开始之后拿着花的同学开始传花,每个同学都可以把花传给自己左右的两个同学中的一个(左右任意),当主持人停止击鼓时,传花停止,此时,正拿着花没传出去的那个同学就要给大家表演一个节目。

输入

step:传的次数
num:人数(同学编号从1-num)

输出

result: 从1号同学开始传递,重新回到1号同学的路径个数

状态转移方程

每一个同学编号从1-num;
保存状态的二维数组:dp[step+1][num+1]
初始状态:

dp[0][1] = 1 //一号同学初始状态
dp[1][2] = 1 //从1号同学经过一步到2号同学
dp[1][num] = 1 //从1号同学经过一步到num号同学

  • 如果从编号为1的同学开始,则状态转移:dp[i][1] = dp[i-1][n]+dp[i-1][2]
  • 如果从编号为n的同学开始,则状态转移:dp[i][n] = dp[i-1][n-1]+dp[i-1][1]
  • 其余情况,状态转移:dp[i][j] = dp[i-1][j-1]+dp[i-1][j+1]

code

public static int solution(int step,int num){
        int[][] dp = new int[step+1][num+1];

        dp[0][1] = 1;
        dp[1][2] = 1;
        dp[1][num] = 1;

        for (int i=1;i<=step;i++){
            for (int j=1;j<=num;j++){

                if (j==1)
                    dp[i][j] = dp[i-1][num]+dp[i-1][2];
                else if (j==num)
                    dp[i][j] = dp[i-1][num-1]+dp[i-1][1];
                else
                    dp[i][j] = dp[i-1][j-1]+dp[i-1][j+1];

            }
        }
        return dp[step][1];
    }

相关文章

  • 击鼓传花问题

    击鼓传花 题目 学校联欢晚会的时候,为了使每一个同学都能参与进来,主持人常常会带着同学们玩击鼓传花的游戏。游戏规则...

  • 击鼓传花

    你的童年,是否有樱花 四人游戏 花在动 落日中传出细微的笑声 欢乐的时光中,反复长大 击鼓传花 夜色中 令人灼...

  • 击鼓传花

    上什么山 唱什么山歌 击鼓传花 击什么鼓 传什么花 当然击奋进之鼓 传美德之花 楼市有否真理 售楼小姐那句,今天买...

  • 击鼓传花

    在班上开展过很多游戏,让我最开心的是击鼓传花。 在一个秋高气爽的早上,班上正开展着有趣的游戏击鼓传...

  • 击鼓传花

    你喜欢游戏吗?我喜欢。那你喜欢什么游戏呢?我有多的游戏呢?比如:击鼓传花,丢手绢,五步猫,跳格子等等的游戏 ...

  • 击鼓传花

    应用场景:午间游戏 项目性质:团队协作 活动时间:10分钟 使用道具:假花一束或纯净水一瓶(不易损坏) 活动目的:...

  • 击鼓传花

    刚才还在小跑的鼓声,突然停住了脚步,球传到了潘韦宇的手上,他一下子呆住了,眼睛瞪得大大的,双手抱着球,趴在桌子上,...

  • 击鼓传花

    今天,4.2班的老师,来到我们教室为我们讲一节作文课,老师在讲作文的时候也给我们带来了一个游戏,叫“击鼓传...

  • 击鼓传花

    今天上午,最后一节课我们班玩了一个游戏叫击鼓传花。 我们开始玩游戏了,我们先挑了固守,老师说谁要当鼓手的时候,...

  • 《击鼓传花》

    今天我读了一篇作文,叫《击鼓传花》,我来给你们讲一讲吧! 今天下午,老师带着我们玩了一个别开生面的...

网友评论

      本文标题:击鼓传花问题

      本文链接:https://www.haomeiwen.com/subject/yefbdctx.html