D. 【例题4】传球游戏

题目链接
内存限制:256 MiB
时间限制:1000 ms
标准输入输出
题目类型:传统
评测方式:文本比较

题目描述

上体育课的时候,小蛮的老师经常带着同学们一起做游戏。这次,老师带着同学们一起做传球游戏。

游戏规则是这样的: n个同学站成一个圆圈,其中的一个同学手里拿着一个球,
当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),
当老师再次吹哨子时,传球停止,此时,拿着球没有传出去的那个同学就是败者,要给大家表演一个节目。

聪明的小蛮提出一个有趣的问题:有多少种不同的传球方法可以使得从小蛮手里开始传的球,传 m 次以后,
又回到小蛮手里。两种传球方法被视作不同的方法,当且仅当这两种方法中,接到球的同学按接球顺序组成的序列是不同的。
比如有三个同学1号,2号,3号,并假设小蛮为1号,球传了3次回到小蛮手里的方式有 1 → 3 → 2 → 1 1→3→2→1 1→3→2→1和 1 → 2 → 3 → 1 1→2→3→1 1→2→3→1 ,共 2 种。

输入格式

一行,有两个用空格隔开的整数 。

输出格式

个整数,表示符合题意的方法数。

样例

样例输入

3 3

样例输出

2

数据范围

对于 % 100 \%100 %100 的数据满足: 3 ≤ n ≤ 30 , 1 ≤ m ≤ 30 3\leq n\leq30,1\leq m\leq30 3≤n≤30,1≤m≤30。

题解

设 f [ i ] [ j ] f[i][j] f[i][j]为传了 i i i次后,到第 j j j个人的方案数。
显而易见 f [ i ] [ j ] = f [ i − 1 ] [ j − 1 ] + f [ i − 1 ] [ j + 1 ] f[i][j]=f[i-1][j-1]+f[i-1][j+1] f[i][j]=f[i−1][j−1]+f[i−1][j+1],
因为 f [ i ] [ j ] f[i][j] f[i][j]可以由上一次传球中传到左边的人和右边的人的方案数之和转移过来。
特别的:
f [ 0 ] [ 1 ] = 1 f[0][1]=1 f[0][1]=1
f [ i ] [ 1 ] = f [ i − 1 ] [ n ] + f [ i − 1 ] [ j + 1 ] f[i][1]=f[i-1][n]+f[i-1][j+1] f[i][1]=f[i−1][n]+f[i−1][j+1]
f [ i ] [ n ] = f [ i − 1 ] [ n − 1 ] + f [ i − 1 ] [ 1 ] f[i][n]=f[i-1][n-1]+f[i-1][1] f[i][n]=f[i−1][n−1]+f[i−1][1]
显然因为问题是一个环,第1个人的左边是n,第n个人的右边是1。
最后答案便是 f [ m ] [ 1 ] f[m][1] f[m][1]

代码

#include<iostream>
using namespace std;
long long f[100][100],n,m;
int main()
{cin>>n>>m;f[0][1]=1;for(int i=1; i<=m; i++)//枚举传球次数{for(int j=1;j<=n;j++)//枚举传到第几个人{if(j==1) f[i][j]=f[i-1][n]+f[i-1][j+1];else if(j==n) f[i][j]=f[i-1][n-1]+f[i-1][1];else f[i][j]=f[i-1][j-1]+f[i-1][j+1];}}cout<<f[m][1];
}

YbtOJ——递推算法【例题4】传球游戏相关推荐

  1. 微课|中学生可以这样学Python(8.3节):递推算法例题讲解

    适用教材: 董付国,应根球.<中学生可以这样学Python>.清华大学出版社,2017. 第8章  常用算法的Python实现 8.3  递推算法案例分析 京东购买链接:https://i ...

  2. YBTOJ 递推算法合集

    来康康吧qwq 错排问题 令 f [ i ] f[i] f[i] 为 1 到 i 1 到 i 1到i 错排的方案数,考虑加入第 i i i 个数,则 i i i 必然要放在前面的某一个位置 a a a ...

  3. 递推算法与递推套路(手撕算法篇)

    联系我们:有道技术团队助手:ydtech01 / 邮箱:[ydtech@rd.netease.com] 之前学习基础知识的时候也说了,递推和动态规划有这暧昧不清的关系,可以说,动态规划就是多了一个决策 ...

  4. 递推算法(以数字三角形为例)

    递推算法(以数字三角形为例) 数字三角形.如下所示为一个数字三角形.请编一个程序计算从顶到底的某处的一条路径,使该路径所经过的数字总和最大.只要求输出总和. 1. 一步可沿左斜线向下或右斜线向下走: ...

  5. 递推算法与递推套路(算法基础篇)

    联系我们:有道技术团队助手:ydtech01 / 邮箱:[ydtech@rd.netease.com] 相信了解算法同学经常会说动态规划太难了,看到题目完全不知从何下手,或者是说"一看题解就 ...

  6. B样条曲线——de Boor递推算法实现

    B样条曲线--de Boor递推算法实现 1. 定义   为保留Bezier方法的优点,B样条曲线的方程定义为 P(t)=∑i=0nPiNi,k(t)P(t)=\sum_{i=0}^n P_i N_{ ...

  7. C语言经典递推算法之杨辉三角展开(详解)

    文章目录 一.递推算法 二.杨辉三角展开 一.递推算法 这是一种比较简单的算法,即通过已知条件,利用特定关系得到中间结论,然后得到最后结果的算法.递推算法可以分为顺推和逆推两种. 二.杨辉三角展开 1 ...

  8. c语言递推算法微课,最小二乘参数估计的递推算法及其C语言实现 精品.pdf

    2009年4月 焦作大学学报 №.2 第2期 JoURNALOFJIAOZUOUNIVERSITY Apr.2009 最小二乘参数估计的递推算法及其C语言实现 胡 沙 (河南理工大学电气工程与自动化学 ...

  9. Bezier曲线——de Casteljau递推算法实现

    1. 定义 给定 n + 1 n+1 n+1个点的位置矢量 P i ( i = 0 , 1 , - , n ) P_i(i=0,1,\dots,n) Pi​(i=0,1,-,n),则Bezier曲线可 ...

最新文章

  1. mysql查看当前实时连接数
  2. SAP RETAIL 供应商寄售库存的UB STO
  3. 软件级负载均衡器(LVS/HAProxy/LVS)的特点简介和对比
  4. Tomcat下使用Druid配置JNDI数据源
  5. ASP.NET Core 运行原理剖析
  6. 中国互联网大会首届智能网联论坛举行 数字技术驱动交通出行行业创新发展
  7. 通达信公式解密工具5.05
  8. 计算机新建里没有word,为什么电脑右键新建里头没有WORD文档,如何加上
  9. 15个网页数据采集中最常遇到的问题(干货)
  10. Ps如何制作动态图片
  11. 可行性分析与需求分析
  12. 什么是云数据库RDS
  13. Centos7+LAMP+owncloud+数据库读写分离
  14. 溜溜TC Games手游助手,无需模拟器,高清流畅不卡顿功能介绍
  15. MySQL 通过子查询批量插入数据
  16. android串口通信——android-serialport-api
  17. 也谈特征值和特征向量的几何意义
  18. 3月第5周业务风控关注 | 央视曝光偷密码的“万能钥匙”,9亿人个人信息存风险
  19. 进入不了计算机鼠标老是转,鼠标一直转圈怎么办?怎么让鼠标不要一直转圈?...
  20. 最新COS美女写真网站整站数据打包+附搭建教程/实测可用

热门文章

  1. 2022-08-14 网工进阶(二十六) MSTP-网络层次、端口角色、端口状态、拓扑计算
  2. 智能农机上天入地,无人化真是未来农业的风口吗?
  3. C#与欧姆龙NX系列PLC通讯
  4. 传感器i2c与arduino连接_Arduino中进行I2C通信发送数据案例分析
  5. oracle数据库19C更改字体的大小及字体名称
  6. 2019福建计算机一级省考,2019福建省考笔试分数线是多少
  7. 基于deepke构建红楼梦知识图谱
  8. Microsoft Visual C++ 2005 SP1 Redistributable 安装错误
  9. mysql如何在if中设置return_mysql 存储过程 if return
  10. android监听app安装应用程序,魔镜慧眼监控app安卓系统