大富翁N步求解

来源:互联网 发布:软件项目总结ppt 编辑:程序博客网 时间:2024/05/28 05:19
[编程题] 大富翁游戏

时间限制:1秒

空间限制:32768K

大富翁游戏,玩家根据骰子的点数决定走的步数,即骰子点数为1时可以走一步,点数为2时可以走两步,点数为n时可以走n步。求玩家走到第n步(n<=骰子最大点数且是方法的唯一入参)时,总共有多少种投骰子的方法。 
输入描述:
输入包括一个整数n,(1 ≤ n ≤ 6)


输出描述:
输出一个整数,表示投骰子的方法

输入例子1:
6

输出例子1:
32
本题为递归求解,但是发现规律后可以直接推导出表达式,代码量大大减少。
1.递归规律
步数为5的情况:如图1所示,可以分解为步数为4的走一步得到,步数为3的走两步得到,步数为2的走三步得到,步数为1的走一步得到,以及本身投掷一次(即投掷情况为5)得到。
 得到递归表达式如图2所示,上下相减,求出f(n)的表达式为f(n)=2^(n-1);
本题原为美团2017秋招笔试,代码如下,已AC。
#include <iostream>#include <math.h>using namespace std;int main(){    int n;    int ans;    scanf("%d",&n);    ans = pow(2,n-1);    printf("%d",ans);    return 0;}


原创粉丝点击