(2016美团牛客网编程测试题)大富翁

来源:互联网 发布:数据二级有效性使用 编辑:程序博客网 时间:2024/06/08 01:00

/*

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

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


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

输入例子1:
6

输出例子1:
32

*/


由于是编程渣渣  所以想写的清楚一些  为了以后自己能看明白     

/*

思路 1  :  题目中的n<=6 很重要 ,如果实在不会 可以手算出每个值  然后用switch   ac 了这道题 (看到别人写的,才发现有些条件的重要性)

思路2:  理解题目很重要的呀    玩家走到第n步时(并不代表走了n次),总共有多少中投骰子的方法,就是说玩家有多少中投的办法可以走到n步处。(智障的自己 一开始不知道怎么想的 就是没有理解了题目)

递归思路:到了n 步处 由前一次到达的位置+ 投掷一次

          玩家走了n步f(n),则可能性有:1、到n-1步f(n-1)+ 最后投了一个1

2、到n-2步f(n-2)时投了一个2

.。。。。。

n-1、到1步f(1)直接投了一个n-1

n、直接投出一个n

故:f(n)=f(n-1)+f(n-2)+......+f(1)+1;

*/

public class Main {    public static void main(String[] args) {        java.util.Scanner in = new java.util.Scanner(System.in);        int n = in.nextInt();        System.out.println(fun(n));    }    public static int fun(int n){        if(n==1)            return 1;        else{            int sum=0;            for(int i=1;i<n;i++){                                sum+=fun(i);            }            sum+=1;            return sum;        }    }}


  牛客网通过例子!!!!

纪念我的第一个技术博客


原创粉丝点击