java实现算法设计之走楼梯
2013-06-01 16:01
337 查看
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
GoStair gs = new GoStair(6);
gs.backtrack(0);
}
}
class GoStair{
int n;
int s[];
GoStair(int m){
n=m;
s=new int
;
}
void backtrack(int t){
if(sum(t)>=n){//判断第t个节点前的总和是否大于等于楼梯总数
if(sum(t)==n){//相等
for(int i=0;i<t;i++)
//if(s[i]>0)
System.out.print(s[i]+" ");
}
System.out.println();
}else{
for(int i=1;i<=2;i++)
if(sum(t)+i<=n)//如果第t个节点前的总和+i小于等于楼梯总数,说明第t个节点可以等于i
{s[t]=i;
// if(sum(t+1)<n)
backtrack(t+1);
}
}
}
//求第k个节点前所总的楼梯总数
private int sum(int k){
int temp=0;
for(int i=0;i<k;i++)
temp+=s[i];
return temp;
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
GoStair gs = new GoStair(6);
gs.backtrack(0);
}
}
class GoStair{
int n;
int s[];
GoStair(int m){
n=m;
s=new int
;
}
void backtrack(int t){
if(sum(t)>=n){//判断第t个节点前的总和是否大于等于楼梯总数
if(sum(t)==n){//相等
for(int i=0;i<t;i++)
//if(s[i]>0)
System.out.print(s[i]+" ");
}
System.out.println();
}else{
for(int i=1;i<=2;i++)
if(sum(t)+i<=n)//如果第t个节点前的总和+i小于等于楼梯总数,说明第t个节点可以等于i
{s[t]=i;
// if(sum(t+1)<n)
backtrack(t+1);
}
}
}
//求第k个节点前所总的楼梯总数
private int sum(int k){
int temp=0;
for(int i=0;i<k;i++)
temp+=s[i];
return temp;
}
}
相关文章推荐
- 【连载】Dijkstra求最短路径算法设计—Java实现
- 上楼梯算法的java实现(转)
- java数据结构与算法之平衡二叉树(AVL树)的设计与实现
- AIX 程序设计大赛-AIX正方形问题算法及Java程序实现(方案二)
- java实现算法设计与分析-最大间隙
- 基于java最短路径算法公交查询系统的设计与实现
- AIX 程序设计大赛-AIX正方形问题算法及Java程序实现(方案三)
- 算法设计、分析与实现 从入门到精通 C、C++和Java 这本书的堆实现85页C++语言实现有问题
- java实现算法设计之导弹拦截
- 算法设计-java实现2
- [Java算法分析与设计]单向链表(List)的实现和应用
- 【算法设计】合并排序、自然合并排序与快速排序算法的Java实现
- [Java算法分析与设计]线性结构与顺序表(List)的实现应用
- Java集合与数组实现升序排序的算法设计
- 算法设计-java实现
- [Java算法分析与设计]顺序循环队列的实现
- 【算法分析与设计】快速求幂算法的分析及java实现
- 【老鸟学算法】包含 min函数的栈设计——java实现
- 第K大数 算法分析、设计与实现(Java)
- 棋盘覆盖 算法分析、设计与实现(Java)