nyoj 252 01串 动态规划( java)
-
当n=2时, 输出 3;
当n=3时, 输出 5;
当n=4时, 输出 8;
#### 分析: 当n=4时,如 0101 符合条件,
当第一个位置是0时,还剩3个位置 ,与n=3时个数相等; 符合条件的为5个;
当第一个位置是1时,第二个位置只能是0;还剩两个位置,与n=2时个数相等 符合条件的为3个;
由此得出 f(n)=f(n-1)+f(n-2);
C/C++:1 #include<stdio.h> 2 int main() 3 { 4 int t,n,a,b,i; 5 scanf("%d",&t); 6 while(t--) 7 { 8 scanf("%d",&n); 9 if(n==2) 10 printf("3\n"); 11 else if(n==3) 12 printf("5\n"); 13 else 14 { 15 a=3;b=5; 16 for(i=4;i<=n;i++) 17 { 18 b=a+b; 19 a=b-a; 20 } 21 printf("%d\n",b); 22 } 23 } 24 return 0; 25 }
java:
1 import java.util.Scanner; 2 public class Main { 3 public static void main(String[] args) { 4 Scanner sc=new Scanner(System.in); 5 int t=sc.nextInt(); 6 while(t-->0){ 7 int n=sc.nextInt(); 8 if(n==2) 9 System.out.println(3); 10 else if(n==3) 11 System.out.println(5); 12 else{ 13 int a=3,b=5; 14 for(int i=4;i<=n;i++){ 15 b=b+a; 16 a=b-a; 17 } 18 System.out.println(b); 19 } 20 } 21 } 22 }