Problem B
Problem Description
度熊面前有一個全是由1構成的字元串,被稱為全1序列。你可以合并任意相鄰的兩個1,進而形成一個新的序列。對于給定的一個全1序列,請計算根據以上方法,可以構成多少種不同的序列。
Input
這裡包括多組測試資料,每組測試資料包含一個正整數,代表全1序列的長度。
Output
對于每組測試資料,輸出一個整數,代表由題目中所給定的全1序列所能形成的新序列的數量。
Sample Input
1
3
5
Sample Output
Copy
1
3
8
Hint
Statistic |
Submit |
Clarifications |
Back
看到這種題 隻有兩種想法 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
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]);
}
}
}