62,614
社区成员
发帖
与我相关
我的任务
分享
static int to = 10;// 台阶数
static int maxStepLen = 3;// 最大步长
static int count = 0;
static void printNode(List<Integer> path, int from) {
for (int length = 1; length <= maxStepLen; length++) {// 步长都可以是1,2,3
List<Integer> copyPath = new ArrayList<Integer>(path);// 将之前的路径复制
copyPath.add(length);// 步长加入path
int nowFrom = from + length;// 现在的位置
if (nowFrom == 10) {
count++;
System.out.println(path.toString());
break;
}
printNode(copyPath, nowFrom);
}
}
public static void main(String[] args) {
printNode(new ArrayList<Integer>(), 0);
System.out.println(count);
}
package everydaydo;
import java.util.ArrayList;
import java.util.List;
public class ClimbStairs {
/**
* @param args
*/
public static void main(String[] args) {
List<Integer> Steps = new ArrayList<Integer>();
Climb(Steps, 6);
}
public static void Climb(List<Integer> Steps,int length){
if(length==1){
Steps.add(1);
System.out.println(Steps.toString());
}else if(length==2){
List<Integer> temp = new ArrayList<Integer>();
temp.addAll(Steps);
Steps.add(1);
Steps.add(1);
System.out.println(Steps.toString());
temp.add(2);
System.out.println(temp.toString());
}else if(length==3){
List<Integer> temp1 = new ArrayList<Integer>();
temp1.addAll(Steps);
List<Integer> temp2 = new ArrayList<Integer>();
temp2.addAll(Steps);
List<Integer> temp3 = new ArrayList<Integer>();
temp3.addAll(Steps);
Steps.add(1);
Steps.add(1);
Steps.add(1);
System.out.println(Steps.toString());
temp1.add(2);
temp1.add(1);
System.out.println(temp1.toString());
temp2.add(1);
temp2.add(2);
System.out.println(temp2.toString());
temp3.add(3);
System.out.println(temp3.toString());
}else{
List<Integer> temp1 = new ArrayList<Integer>();
temp1.addAll(Steps);
List<Integer> temp2 = new ArrayList<Integer>();
temp2.addAll(Steps);
List<Integer> temp3 = new ArrayList<Integer>();
temp3.addAll(Steps);
temp1.add(1);
Climb(temp1,length-1);
temp2.add(2);
Climb(temp2,length-2);
temp3.add(3);
Climb(temp3,length-3);
}
}
}
public class A {
private static final int allstep = 4; //阶梯总数
public static void main(String[] args) {
int step[] = new int[allstep]; //路径数组,step[i]表示第i+1步走了几级楼梯,
//如step[0]=2表示第1步走了2级。
for (int i = 0; i < allstep; i++)
step[i] = 0;
foo(step, 0, 1, -1); //第一步走1级台阶
foo(step, 0, 2, -1); //第一步走2级台阶
foo(step, 0, 3, -1); //第一步走3级台阶
}
/** 此函数表示每走一步的动作过程。a[]存储走过的路径,steped表示已经走过的台阶总数,
* go表示这一步将要走几级台阶,index表示已经走了几步
*/
private static void foo(int a[], int steped, int go, int index) {
if (steped+go < allstep) { //如果已经走过的台阶数和这一步将要走的台阶数之和小于
//总台阶数
index += 1; //步数增1
a[index] = go; //将此步走过的台阶数存入路径中
//递归走下一步
foo(a, steped+go, 1, index);
foo(a, steped+go, 2, index);
foo(a, steped+go, 3, index);
} else if (steped+go == allstep) { //如果已经走过的台阶数和这一步将要走的台阶数之
//和等于总台阶数,表示走完,输出路径
index += 1;
a[index] = go;
//输出路径
StringBuffer out = new StringBuffer("路径:");
for (int i = 0; i <= index; i++)
out.append(a[i]+" ");
System.out.println(out);
} else {
}
}
}
//台阶总数为4时的输出结果:
路径:1 1 2
路径:1 2 1
路径:1 3
路径:2 1 1
路径:2 2
路径:3 1
package sercli;
public class Cal {
/**
* @测试一下
*/
public static void main(String[] args) {
Cal cc=new Cal();
int answer1=cc.getNum(1);
int answer2=cc.getNum(2);
int answer3=cc.getNum(3);
int answer4=cc.getNum(4);
int answer5=cc.getNum(5);
int answer6=cc.getNum(6);
int answer7=cc.getNum(7);
System.out.println("answer1---"+answer1);
System.out.println("answer2---"+answer2);
System.out.println("answer3---"+answer3);
System.out.println("answer4---"+answer4);
System.out.println("answer5---"+answer5);
System.out.println("answer6---"+answer6);
System.out.println("answer7---"+answer7);
}
public int getNum(int stairs){
if((stairs==0)||(stairs<0)){
return 0;
}else if(stairs==1){
return 1;
}else if(stairs==2){
return 2;
}else if(stairs==3){
return 4;
}else{
return getNum(stairs-1)+getNum(stairs-2)+getNum(stairs-3);
}
}
}
package sercli;
public class Cal {
/**
* @测试一下
*/
public static void main(String[] args) {
Cal cc=new Cal();
int answer1=cc.getNum(1);
int answer2=cc.getNum(2);
int answer3=cc.getNum(3);
int answer4=cc.getNum(4);
int answer5=cc.getNum(5);
int answer6=cc.getNum(6);
int answer7=cc.getNum(7);
System.out.println("answer1---"+answer1);
System.out.println("answer2---"+answer2);
System.out.println("answer3---"+answer3);
System.out.println("answer4---"+answer4);
System.out.println("answer5---"+answer5);
System.out.println("answer6---"+answer6);
System.out.println("answer7---"+answer7);
}
public int getNum(int stairs){
if((stairs==0)||(stairs<0)){
return 0;
}else if(stairs==1){
return 1;
}else if(stairs==2){
return 2;
}else if(stairs==3){
return 5;
}else{
return getNum(stairs-1)+getNum(stairs-2)+getNum(stairs-3);
}
}
}
public class StairsTest {
/**
* @param args
*/
public static void main(String[] args) {
int x ;
int y ;
int z ;
int n =9 ;
for(x=0;x<n;x++){
for(y=0;y<n/2;y++){
for(z=0;z<n/3;z++){
if(x+2*y+3*z==n){
System.out.println("第一步-->"+x+"第二步-->"+y+"第三部-->"+z);
}
}
}
}
}
}
这种应该是最没文化的了。。。。public class ClimbStairs {
public static void main(String[] args) {
int n;
System.out.println(go(n));
}
public static int go(int n) {
if(n == 1) return 1;
if(n == 2) return 2;
if(n == 3) return 4;
return go(n-1)+go(n-2)+go(n-3);
}
}