当前位置: 代码迷 >> 综合 >> HDU 1297 Children’s Queue JAVA *
  详细解决方案

HDU 1297 Children’s Queue JAVA *

热度:105   发布时间:2023-09-23 03:42:25.0

 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1297

题意:有n个位置,男孩女孩排队,要求女孩至少要2个在一起。 

思路:设f[n]表示,n个人的情况。情况一、在f[n-1]的情况后面加一个男孩;情况二、在f[n-2]的情况后面加两个女孩;情况三、在f[n-3]最后是男孩(等价于在f[n-4]个个数)的后面加三个女孩; 所以:f[n]=f[n-1]+f[n-2]+f[n-4];由于数据比较大,所以采用大数加法就可以了。

 思路来自:寻找&星空の孩子


import java.util.*;  
import java.math.*;  
import java.text.*;  
import java.io.*;  public class Main
{public static void main(String[] args) {Scanner cin=new Scanner(new BufferedInputStream(System.in));BigInteger[] a = new BigInteger [1000+5];a[1]=BigInteger.ONE;a[2]=BigInteger.valueOf(2);a[3]=BigInteger.valueOf(4);a[4]=BigInteger.valueOf(7);for(int i=5;i<=1000;i++) a[i]=a[i-1].add(a[i-2]).add(a[i-4]);// int T=cin.nextInt();while(cin.hasNext()){int n=cin.nextInt();System.out.println(a[n]);}}
}


  相关解决方案