码迷,mamicode.com
首页 > 其他好文 > 详细

递推 + 大数 HDU1297

时间:2015-08-05 18:12:19      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:

技术分享
 1 import java.math.*;
 2 import java.util.*;
 3 
 4 public class Main
 5 {
 6     static BigInteger arr[] = new BigInteger [1000000];
 7     public static void main(String[] args)
 8     {
 9         Scanner cin=new Scanner(System.in);
10         int n;
11         while(cin.hasNext())
12         {
13             n=cin.nextInt();
14             arr[0]=BigInteger.valueOf(1);
15             arr[1]=BigInteger.valueOf(1);
16             arr[2]=BigInteger.valueOf(2);
17             arr[3]=BigInteger.valueOf(4);
18             arr[4]=BigInteger.valueOf(7);
19             for(int i=5;i<=n;i++)
20             {
21                 arr[i]=BigInteger.ZERO;
22                 arr[i]=arr[i].add(arr[i-1]);
23                 arr[i]=arr[i].add(arr[i-2]);
24                 arr[i]=arr[i].add(arr[i-4]);
25             }
26             System.out.println(arr[n]);
27         }
28     }
29 }
View Code

F[n]代表到n位置结尾,是序列合法的排列种数

如果最后一个位置是男,只需前n-1个位置合法即可

如果最后一个位置是女,有两种可能:

  1. 前n-1个位置不合法,即第n-1个位置为单个女,而此时需要前n-2个位置合法

  2. 前n-1个位置合法,即第n-1,n-2位置都为女,n-3位置为男,而此时需要前n-4个位置合法,为什么不是n-3呢? 因为如果要求前n-3个位置合法,就会出现和上种可能重复的情况,例如:女,女,女,女,这就满足这两种可能

所以F[N]=F[N-1]+F[N-2]+F[N-4];

 

递推 + 大数 HDU1297

标签:

原文地址:http://www.cnblogs.com/wsruning/p/4705155.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!