Java 使用步骤1、2或3计算到达第四级楼梯的方式
所以总的答案应该是7,我错在哪里了??Java 使用步骤1、2或3计算到达第四级楼梯的方式,java,algorithm,dynamic,Java,Algorithm,Dynamic,所以总的答案应该是7,我错在哪里了?? 您的for循环以i=3开始,但您已经填写了res[3]。如果到达3的方法数与硬编码值arr[3]=4相同,则这不是问题,但它不是 实际上,您从未将res[0]设置为1,因此,它将res[3]=res[2]+res[1]+res[0]计算为3,而不是4 此外,您还返回了res[3]而不是res[n],并且应该初始化长度为n+1的数组 因此,最小的修正是将res[0]设置为1: arr[1] = 1 way. arr[2] = 1,1 or 2 arr[3]
您的
for
循环以i=3
开始,但您已经填写了res[3]
。如果到达3
的方法数与硬编码值arr[3]=4相同,则这不是问题代码>,但它不是
实际上,您从未将res[0]
设置为1
,因此,它将res[3]=res[2]+res[1]+res[0]
计算为3
,而不是4
此外,您还返回了res[3]
而不是res[n]
,并且应该初始化长度为n+1
的数组
因此,最小的修正是将res[0]
设置为1
:
arr[1] = 1 way.
arr[2] = 1,1 or 2
arr[3] = 1,1,1 ; 2,1 ; 1,2 ; 3
publicstaticvoidmain(字符串[]args){
int n=46;
int[]arr=新int[n+1];
arr[0]=1;
arr[1]=1;
arr[2]=2;
arr[3]=4;
对于(int i=3;i }
因为当for i=3运行时,它正在添加arr[2]+arr[1]+arr[0],而您尚未定义arr[0],因此它正在将arr[3]更新为3。当arr[4]=3+2+1=6时
arr[1] = 1 way.
arr[2] = 1,1 or 2
arr[3] = 1,1,1 ; 2,1 ; 1,2 ; 3
public static void main(String[] args) {
int n = 46;
int [] arr = new int[n+1];
arr[0] = 1;
arr[1] = 1;
arr[2] = 2;
arr[3] = 4;
for(int i = 3; i < n; i++){
arr[i]= arr[i-1]+arr[i-2]+arr[i-3];
}
System.out.println(arr[n]);
}