牛顿家住楼上,一共有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升级版本