题目描述:
N个同学围一圈,同学之间可以左右传球,A为第一位同学,有多少种传球方法,在****传M次后回到A同学手中? 输出情况数 输入人数n、传球次数m
例如:N=3 M=3 假设为 1-2-3 个同学围一圈
有两种可能:1->2->3->1 1->3->2->1

像这种有几种情况的题基本都要用到递归,或者递推、动态规划等

1、方法一:递归

分三种情况:

1. 球在第一个人手里 可以传2 或者传n
2. 球在最后一个人手里 可以传1 或者n-1
3. 球在中间的人的手里 传 k-1 或 k+1

int sum=0;
int m=0,n=0;
void dfs(int k,int step)
{if(step==m)  //传了m步 递归出口{if(k==1) //如果传了m次球回到第一个人手中 算一次 k代表球在第几个人手中sum++;return;}//一直递归 列出每一种符合情况的个数 即每一种step=m&&k=1的情况if(k==n)   //球在第n个人手里 {dfs(1,step+1);dfs(k-1,step+1);} if(k==1) //球在第一个人手里 {dfs(n,step+1);dfs(2,step+1);}if(k>1 && k<n) //在第1-n之间 {dfs(k+1,step+1);   //给右边 步数也要+1dfs(k-1,step+1); //给左边} } 
main函数
int main()
{cin>>n>>m;//方法一 :递归 dfs(1,0);cout<<sum<<endl;
}

2、方法二:递推
递推 f[i,j]=f[i-1,j-1]+f[i+1,j-1]
球在 i 的位置,传球次数用 j 表示 则i位置的方案数是左右两边
方案的和

int sum=0;
int m=0,n=0;
int f[100][100]={0};int main()
{cin>>n>>m;//方法一 :递归 dfs(1,0);cout<<sum<<endl; //方法二:递推 f[1][0]=1; //从1号开始传球 初始化一号 不管谁从一号得到球都计传球一次 for(int j=1;j<=m;j++){//这里也分三种情况for(int i=2;i<=n-1;i++) //每次刷新f[i][j] = f[i-1][j-1]+f[i+1][j-1];//球在 **i** 的位置,传球次数用 **j** 表示 则i位置的方案数是左右两边方案的和  f[1][j] = f[2][j-1]+f[n][j-1];f[n][j] = f[1][j-1]+f[n-1][j-1];   } cout<<f[1][m]<<endl;}

总结

递归算法和动态规划为算法部分最难理解的,只要某一天顿悟了,就出道了!O(∩_∩)O哈哈~

传球游戏——递归算法相关推荐

  1. 洛谷P1057 传球游戏(记忆化搜索)

    点我进入题目 题目大意:n个小孩围一圈传球,每个人可以给左边的人或右边的人传球,1号小孩开始,一共传m次,请问有多少种可能的路径使球回到1号小孩. 输入输出:输入n,m,输出路径的数量. 数据范围:4 ...

  2. 动态规划——洛谷_P1057传球游戏

    题目: 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球, ...

  3. 洛谷 1057——传球游戏(递推与递归二分)

    题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同 ...

  4. P1057 传球游戏

    题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同 ...

  5. 传球游戏(洛谷-P1057)

    题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的: n 个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每 ...

  6. Java 算法 传球游戏

    目录标题 题目描述 解题思路 代码 流程图 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手 ...

  7. 蓝桥杯 传球游戏 动态规划

    题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同 ...

  8. 个人赛 A 题 传球游戏(ball)

    Description 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开 ...

  9. CodeVs 1148 传球游戏

    CodeVs 1148 传球游戏 解题报告                                                      by MPS ------------------ ...

最新文章

  1. body标签下莫名奇妙多了一行空行,原来是编码的问题
  2. Ajax4Jsf 简单介绍
  3. python barrier_Python线程障碍对象Barrier原理详解
  4. python标准库之zipfile
  5. 如何使用Movavi Video Editor Plus在Mac上制作旁白配音视频
  6. Hector代码笔记
  7. java图的拓扑排序,本周算法:图的拓扑排序,本周算法拓扑排序
  8. 在matlab下计算信源熵
  9. 最全的LED电源解决方案 转载
  10. 一文读懂 HTTPS 与 TLS证书链校验
  11. linux pclint配置_PC-lint
  12. html5 div 拱桥形状制作,纯CSS3+DIV实现小三角形边框效果的示例代码
  13. css变形-扭曲(skew())
  14. ES6, ES7, ES8, ES9 以及 ES10 新特征
  15. git push提交成功后如何撤销回退
  16. 计算机网络按其互连的距离远近,计算机网络按其互连的距离远近,可以分为:()。...
  17. POJ 1006 生理周期
  18. CTF新近学习经验和疑难
  19. mysql数据库表设计理论原则实践
  20. 【3D 目标检测】PV-RCNN++

热门文章

  1. 洛谷:第n小的质数(c语言)
  2. 【算法题】第n小的质数
  3. 创业有什么好的项目吗?
  4. React工作62:注意数据格式返回
  5. Android Studio在音视频开发进阶指南中的Mp3Encoder中遇到的问题
  6. 软技能,程序员编程之外的升值之道!
  7. 公需科目必须学吗_执业药师公需科目是必须学的吗?
  8. python设置坐标轴刻度(主、次刻度)
  9. JavaScript中基本数据类型与引用类型
  10. 动作游戏战斗系统设计综述