老板发奖金--niuke

老板一共需要给某个员工发奖金n元,可以选择一次发1元,也可以选择一次发2元,也可以选择一次发3元。请问老板给这位员工发放完n元奖金共有多少种不同的方法?

数据范围:1 <= n <= 10


import java.util.Scanner;

public class GiveMoney {
    public static void main(String[] args) {
        Scanner scanner = new Scanner (System.in);
        System.out.print ("输入要发的奖金:");
        int number = scanner.nextInt ();
        System.out.println ("您有" + f (number) + "种方法发完" + number + "元奖金!!");
    }

    /**
     * 获取 发奖金可用的总方法 的方法
     *
     * @param number 要发的钱数
     * @return 总方法数
     */
    public static int f(Integer number) {
        //设置递归出口
    	if(number==1) {
    		return 1;
    	}
    	//设置计数器,因为都会有全部还钱的情况
    	int count = 0;
    	/**
    	 * 	1:先发1块的情况下,剩下4块是不是就和发4块的方法一样了?
			2:先发2块的情况下,剩下3块是不是就和发3块的方法一样了?
			3:先发3块的情况下,剩下2块是不是就和发2块的方法一样了?
			4:先发4块的情况下,剩下1块是不是就和发1块的方法一样了?
			5:5块一次性发完,唯一方法
    	 */
    	//f(5) = f(4)+f(f3)+(f2)+(f1)+1
    	for(int i = number - 1 ;i >0 ;i--) {
    		count = f(i) + count;
    	}
    	return count + 1;
    }
}

链接:https://www.nowcoder.com/questionTerminal/e1f0cf12993d49f498601d88a57b8e5e
来源:牛客网

老板一共需要给某个员工发奖金n元,可以选择一次发1元,也可以选择一次发2元,也可以选择一次发3元。请问老板给这位员工发放完n元奖金共有多少种不同的方法?

数据范围:1 <= n <= 10
示例1
输入
2
输出
2
说明
一共有2元奖金,有两种发放方法;第一中:分别每次发放1元,两次发放完,第二种一次全部发放完
示例2
输入
3
输出
4
说明
一共有3元奖金,有4种发放方法;第一种:分别每次发放1元,3次发放完,第二种先第一次发2元,第二次发1元; 第三种第一次发1元,第二次发2元; 第四种方法一次全部发放完

import java.util.*;
public class Solution {
    /**
     * 
     * @param num_money int整型 奖金的总数,单位为元
     * @return int整型
     */
    public static void main(String [] args){
        Scanner sc = new Scanner(System.in);
        int num_money = sc.nextInt();
        System.out.println(CalulateMethodCount(num_money));
        sc.close();
    }
    public static int CalulateMethodCount (int num_money) {
        //动态规划
        int[] dp = new int[num_money + 1];
        dp[0] = 0; 
        dp[1] = 1; 
        dp[2] = 2; 
        dp[3] = 4;
        for (int i = 4; i <= num_money; ++i) {
        	//	dp[4]=dp[3]+dp[2]+dp[1]
        	//	dp[5]=dp[4]+dp[3]+dp[2]
            dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3];
        }
        return dp[num_money];
    }
}
posted @ 2022-03-19 15:50  网抑云黑胶SVIP用户  阅读(179)  评论(0编辑  收藏  举报