工作空闲之余,蒜头君经常带着同事们做游戏,最近蒜头君发明了一个好玩的新游戏:nn 位同事围成一个圈,同事 A 手里拿着一个兔妮妮的娃娃。蒜头君喊游戏开始,每位手里拿着娃娃的同事可以选择将娃娃传给左边或者右边的同学,当蒜头君喊游戏结束时,停止传娃娃。此时手里拿着娃娃的同事即是败者。

玩了几轮之后,蒜头君想到一a个问题:有多少种不同的方法,使得从同事 A 开始传娃娃,传了 mm 次之后又回到了同事 A 手里。两种方法,如果接娃娃的同事不同,或者接娃娃的顺序不同均视为不同的方法。例如 1−>2−>3−>11−>2−>3−>1 和 1−>3−>2−>11−>3−>2−>1 是两种不同的方法。

输入格式
输入一行,输入两个整数 n,m(3≤n≤30,1≤m≤30)n,m(3≤n≤30,1≤m≤30),表示一共有 nn 位同事一起游戏,一共传 mm 次娃娃。

输出格式
输出一行,输出一个整数,表示一共有多少种不同的传娃娃方法。

样例输入
3 3
样例输出
2

本体的难点是分出阶段,找出决策,列出状态转移方程。

我们把dpi看做所剩i步,到达同事j所有种情况数。

看例题:我们编号3位同事0~2,如果求0~0的所有情况,那么就要知道在还剩下1步的情况下,

到达1,2的所有情况,即dp0=dp1+dp1;

所以,我们得出状态转移方程dpi=dpi+1+dpi-1.//思路对的,不考虑环路

(因为是环路,所以应该改为dpi=dpi+1+dpi+1;)

最后,我们列出特殊情况:

即当所剩步数是m时,只有dp0=1

(自己到自己肯定不需要走嘛,其他dp0=0,因为0号到其他肯定要走路,不存在0~其他 无需走路的情况)

#include<iostream>
using namespace std;
int main(){int dp[31][30];//每行代表所剩步数,每列代表每位同事int n,m;cin>>n>>m;dp[m][0]=1;//所剩步数是m的有一种情况:从第0位同事开始,不动,到自己。for(int i=1;i<n;i++)   dp[m][i]=0;//其余剩下m步的情况肯定不存在for(int i=m-1;i>=0;i--){for(int j=0;j<n;j++){dp[i][j]=dp[i+1][(j+n+1)%n]+dp[i+1][(j+n-1)%n];}//当在0~5时,5 0 1满足,4 5 0也满足}cout<<dp[0][0];//输出当步数为0,且到达同事0时的所有方法
}

算法学习之路|蒜头君的新游戏1相关推荐

  1. 计蒜客--蒜头君的新游戏

    1000ms  131072K 工作空闲之余,蒜头君经常带着同事们做游戏,最近蒜头君发明了一个好玩的新游戏:n 位同事围成一个圈,同事 A 手里拿着一个兔妮妮的娃娃.蒜头君喊游戏开始,每位手里拿着娃娃 ...

  2. 蒜头君的新游戏 - 计蒜客

    目录 题目 题解 题目 1000ms 131072K 工作空闲之余,蒜头君经常带着同事们做游戏,最近蒜头君发明了一个好玩的新游戏:n 位同事围成一个圈,同事 A 手里拿着一个兔妮妮的娃娃.蒜头君喊游戏 ...

  3. 拿下斯坦福和剑桥双offer,00后的算法学习之路

    董文馨,00后,精通英语,西班牙语.斯坦福大学计算机系和剑桥大学双Offer,秋季将进入斯坦福大学学习. 10岁开始在国外上学:12岁学Scratch: 13岁学HTML & CSS: 14岁 ...

  4. 巩朋:我的算法学习之路

    转自:http://blog.jobbole.com/67348/ 巩朋:我的算法学习之路 分享到: 232 MVC架构模式分析与设计 Linux Guide for Developers 网页广告特 ...

  5. 算法学习之路和程序员(技术)学习必读书籍

    原文链接:http://lucida.me/blog/on-learning-algorithms/ 转 算法学习之路和程序员(技术)学习必读书籍 2015年05月26日 09:46:56 阅读数:1 ...

  6. 完全背包问题贪心算法c语言,数据结构与算法学习之路:背包问题的贪心算法和动态规划算法...

    一.背包问题描述: 有N种物品和一个重量为M的背包,第i种物品的重量是w[i],价值是p[i].求解将哪些物品装入背包可使这些物品的费用总和不超过背包重量,且价值总和最大. 二.解决方法: 1.贪心算 ...

  7. 数组下标的应用——①蒜头君的数字游戏I

    蒜头君有很多张写着数字的卡片,每张卡片上有一个1-10之间的整数,现在需要我们统计每张卡片多少张. 思路: 1)定义一个长度为11的数组存储卡片的信息: 数组的下标-->表示卡片上的数字: 数组 ...

  8. 算法学习之路|最小生成树——prime算法

    摘要: 算法概述:对于一个带权的连通图,其顶点的集合 为V,边的集合为E.定义一个新的集合Vnew={空},第一步在图中任选一个顶点v加入Vnew,第二步寻找最短的边(u,v),其中u∈Vnew,v∈ ...

  9. 算法学习之路|最小生成树—kruskal

    算法概述:一个带权的连通图, 有V个点,E个边,去掉所有的边,得到一个新图,将E个边按权值从小到大排列,然后从权值最小的边<u,v>开始加入,重复下去,但每次加入之前要判断u,v是否连通, ...

最新文章

  1. 因用了Insert into select语句,同事被开除了!
  2. pointer-events属性
  3. DDL修改表,删除表
  4. 3.4 参数展开-机器学习笔记-斯坦福吴恩达教授
  5. python 脚本防破解-pyd编译-python27+win7-64环境
  6. 人工智能 信道估计 深度学习_DEMO演示|基于IVP02D 人工智能工作站的深度学习引擎,实现人群热力估计...
  7. python找工作学历要求_自考本科找工作被拒=自考学历没用?
  8. 基于Servlet3.0的编程式SpringMVC实例详解
  9. javascript控制页面控件隐藏显示的两种方法
  10. Java selenium 读取网页
  11. houdini 做选点效果
  12. Linux-IPC进程间通信(day11)
  13. c++ 以当前时间为文件名打印日志
  14. SSCOM的模拟连接测试及服务器连接
  15. java的ui自动化测试框架_UI自动化测试框架
  16. 萤火虫小程序_成都以北2h的森林小镇!养在深闺的萤火虫、穿行山间的火车,在这露营解锁夏天的小秘密...
  17. 清除浏览器缓存(js、css等)
  18. 在未来的多云世界中,选择云服务提供商,需要考虑什么?
  19. 基于C#(Visual Studio 2013)的AutoCAD2016二次开发(二)创建直线
  20. 冰河浅析 - 揭开木马的神秘面纱(下)

热门文章

  1. Dubbo(十三)dubbo的负载均衡配置策略
  2. jdk的ServiceLoader
  3. Java1.7ConcurrentHashMap类源码解析
  4. linux下c 调用python,在Linux下使用python ctypes调用io\u submit
  5. Mysql探究与学习大纲--主要是为了自己复习方便
  6. Java企业面试算法新得体会之6大数据和空间限制问题6问
  7. Git使用手册:HTTPS和SSH方式的区别和使用
  8. 用Kubernetes搭建Etcd集群和WebUI
  9. php显示24小时制,php将12小时制转换成24小时制的方法
  10. 基于SVM的思想做CIFAR 10图像分类