题目
有ABC三个等级,会根据等级情况确定是否给予绩效奖金。若是连着3个B或者2个C的话就不能得到奖励。
输入:n(表示n个月,n<=12)
输出:得到奖励的方式种类
如:
输入:2
输出:8
具体为:AA AB BA BC CB BB AC CA
分析
这题最终需要得到结果字符串,如果字符串中出现连续2个C或者连着3个B就不能满足条件。字符串的长度是手动输入的,我的思想是采用递归的方式动态生成字符串。每次进入递归的方法时都会对字符串进行合法性判断(这里也就是指对上述条件判断),如果满足条件并且长度为目标长度,则保存这个字符串并结束递归,同样,如果遇到不满足条件的也是需要“剪枝”的。
代码(Java)
import java.util.ArrayList;
import java.util.Scanner;
public class Main{
static ArrayList<String> list = new ArrayList<>();
public static void main(String[] args) {
Scann