标签:
看到这种题 只有两种想法 DP 递推。。
仔细观察菲波那切数列 至于怎么观察的
如果当前有n个1 我们应该怎么得到f[n]呢
我们可以认为有(n-1)个1后面再添加一个1得到 这个时候又分两种情况了
1.不使用我们添加的这个1 总个数f[n-1]
2.使用我们添加的这个1 总个数f[n-2]
如果说错了 请告诉我。。。
又因为N很大 (long long 好像存50多吧) 所以有两个选择 1 java大数 2.c模拟加法
我用的1
AC代码:
import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); BigInteger f []=new BigInteger[205]; f[1]=new BigInteger("1"); f[2]=new BigInteger("2"); for(int i=3;i<=200;i++){ f[i]=f[i-2].add(f[i-1]); } while(sc.hasNext()){ int n=sc.nextInt(); System.out.println(f[n]); } } }
Problem B 2016"百度之星" - 资格赛(Astar Round1)
标签:
原文地址:http://blog.csdn.net/su20145104009/article/details/51417437