美团网大富翁游戏编程原理及实现

美团网大富翁游戏编程原理及实现

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

输入描述:
输入包括一个整数n,(1 ≤ n ≤ 6)

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

输入例子1:
6

输出例子1:
32

原理解释
这道题目很简单,就是简单的初中数学题的实现,首先我们对2进行分析,2可以为1_1和2两步,3可以分为1_2,2_1,1_1_1,3这四步,如果你的数学基本功较好的话,可以看出这是2的(n-1)次方。那到底是不是呢?再来分析4步,以及题中所给的是6步的结果,由此我们可以推断出假想正确。为什么呢?

首先对于所要走的步数我们可以将它们全部化为1,以6步举例。
6分为1_1_1_1_1_1
当然6步如果你不会像我一样想的话,可以这样想,6分为1_5,2_4,3_3,当然反过来也正确。对于6个1来说,中间有5个空,所以结果就是2的5次方。
为什么呢?
首先当成1_5和5_1,那么5也可以分成1_4,2_3,3_2,4_1.
所以我们对5来看还是分成5个1.有两种情况.
然后对5个1在进行划分,有人可能会有疑问,你这样分了,为什么不对6进行2_4分,不急,我接着说。
1_1_1_1_1分为1_4和4_1.这时你看是不是有了1_1和1_1_1_1.记住这时候的1_1代表2.也有两种情况.
所以继续划分,最后因为有6个1有5个间隔,所以结果为2的5次方。

#include<iostream>
#include<math.h>
using namespace std;
int result(int n);
int main()
{
	int n;
	cin>>n;
	cout<<result(n)<<endl;
}

int result(int n)
{
	int result;
	result=pow(2,n-1);
	return result;
}

猜你喜欢

转载自blog.csdn.net/weixin_43748092/article/details/84305643