杭电1297 Children’s Queue

 我对此题进行大致的翻译:
 PHT学校有许多学生。有一天,校长,他的名字叫PigHeader希望所有学生站在一条线。他规定,女孩不能在单独一个人站着
 换句话说,队列中要么全都是男孩,要么女孩不只有一个并肩站着,例如当n=4(表示孩子的数量)有如下排列方式
 FFFF, FFFM, MFFF, FFMM, MFFM, MMFF, MMMM
 这里的F表示女孩,M表示男孩,队列的排列方式总数满足校长需要的,有7种。

 你能写一个程序来计算孩子们的排列方式种数吗?


import java.util.Scanner;
import java.math.BigInteger;

public class Main2 {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a;
        BigInteger[] b = new BigInteger[1010];
        b[1] = BigInteger.ONE;
        b[2] = BigInteger.valueOf(2);
        b[3] = BigInteger.valueOf(4);
        b[4] = BigInteger.valueOf(7);
        while (in.hasNext()) {
            a = in.nextInt();
            if (a < 5) {
                System.out.println(b[a]);
            } else {
                for (int i = 5; i <= a; i++) {
                    b[i] = b[i - 1].add(b[i - 2]).add(b[i - 4]);
                }
                System.out.println(b[a]);
            }
        }

    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值