TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
牛顿家住楼上,一共有18级台阶,有一天他想如果他可以一次上1或2个台阶,问这18个台阶一共有多少种上法?
解答程序如下:
- import java.io.*;
- class upstair{
- public static void main(String argc[]){
- int n=Integer.parseInt(argc[0]);
- int a[]=new int[n+1];
- int count=0;
- int i,k;
- a[0]=-2;
- for(i=1;i< n+1;i++)
- a[i]=1;
- k=n;
- while(a[k]!=-1){
- if(sum(a)< n) k++;
- if(sum(a)==n){
- for(i=1;i<=k;i++)
- System.out.print(a[i]+" ");
- System.out.println();
- count++;
- a[k]=0;
- while(a[--k]==2)
- a[k]=0;
- }
- a[k]++;
- }
- System.out.println(n+"级楼梯的走法:"+count);
- }
- static int sum(int a[]){
- int sum=0;
- for(int i=1;i< a.length;i++)
- sum+=a[i];
- return sum;
- }
- }
复制代码
程序运行结果:(这是五级楼梯的走法)
C:java>java upstair 5
1 1 1 1 1
1 1 1 2
1 1 2 1
1 2 1 1
1 2 2
2 1 1 1
2 1 2
2 2 1
5级楼梯的走法:8
C:java>
源码下载:http://file.javaxxz.com/2014/10/29/235933921.zip |
|