题目大意:
让你输入一个数n,代表有n个人,然后n个人里面,一定不能有一个女的是孤立的,当然,也可以没有女的。
要你输出所有可能的种类。
解题思路:
求递推式。
情况一:(最后是以男生结尾的)
这时候是:f[n-1]+男;
情况二:(最后是以女生结尾的)
1.这时候有可能:f[n-2]+女+女
2.还有可能:f[n-4]+男+女+女+女
所以最后的递推式是:f[n]=f[n-1]+f[n-2]+f[n-4];数递增得很快,要用大数搞。
import java.math.*;
import java.util.Scanner;
public class Main {
public static void main(String []args)
{
Scanner cin=new Scanner(System.in);
BigInteger f[]=new BigInteger[1005];
f[0]=new BigInteger("1");
f[1]=new BigInteger("1");
f[2]=new BigInteger("2");
f[3]=new BigInteger("4");
for(int i=4;i<1005;i++)
f[i]=f[i-1].add(f[i-2]).add(f[i-4]);
while(cin.hasNext())
{
int n=cin.nextInt();
System.out.println(f[n].toString());
}
}
}