牛顿家住楼上,一共有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>
</td>
</tr>
</table>
↑返回目录
前一篇: 快速排序方法Java实现与分析
后一篇: Sun认证Java程序员5.0升级版本