题目:
老板一共需要给某个员工发奖金n元,可以选择一次发1元,也可以选择一次发2元,也可以选择一次发3元。请问老板给这位员工发放完n元奖金共有多少种不同的方法?
数据范围:1 <= n <= 10
tips:
只有三种面值:1元、2元、3元
package com.itlayne.interview;
import java.util.Scanner;
/**
* @author 阿林
* @description :
* 老板一共需要给某个员工发奖金n元,
* 可以选择一次发1元,也可以选择一次发2元,也可以选择一次发3元。
* 请问老板给这位员工发放完n元奖金共有多少种不同的方法?
* @date 2022/9/15 15:19
*/
public class GiveMoney {
public static void main(String[] args) {
System.out.println("请输入奖金:");
Scanner sc = new Scanner(System.in);
int money = sc.nextInt();
System.out.println(money+" 元共有 "+CountedMoney(money)+" 种分法");
sc.close();
}
public static int CountedMoney(int money){
if (money==1) return 1;
if (money == 2) return 2;
if (money == 3) return 3;
int[] dp=new int[money+1];
dp[0]=0;
dp[1] = 1;
dp[2] = 2;
dp[3] = 4;
for (int i = 4; i < money+1; i++) {
dp[i]=dp[i-1]+dp[i-2]+dp[i-3];
}
return dp[money];
}
}