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 }
View Code

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 }
View Code
posted @ 2013-10-03 17:16  ABCDL  阅读(181)  评论(0编辑  收藏  举报