动态规划(爬楼梯问题)

mac2022-06-30  100

问题:

有 n 阶台阶, 每次可以走 1 或 2 步,请问走到第 n 阶台阶一共有多少种走法? 解:设有 f(n) 种走法 第一步: 1 2 第二步: f(n-1) f(n-2) 状态方程:f(n) = f(n-1) + f(n-2) n>2 f(0)=0, f(1)=1, f(2)=2; 函数: int function(int n) { if( n<=0 ) return 0; int arr[1000] = {0, 1, 2}; int i; if( n>0 && n<3 ) return arr[n]; for( i=3; i<=n; i++ ) arr[i] = arr[i-1] + arr[i-2]; return arr[n]; } 有 n 阶台阶, 每次可以走 1 、2、3 … 、n 步,请问走到第 n 阶台阶一共有多少种走法? 解:设有 f(n) 种走法 第一步: 1 2 3 … n 第二步: f(n-1) f(n-2) f(n-3) f(0) 状态方程:f(n) = f(n-1) + f(n-2)+f(n-3)+…+f(0) f(n-1) = f(n-2)+f(n-3)+…+f(0) f(n) = 2*f(n-1) n>1 f(0)=0, f(1)=1; 函数: ```c int function(int n) { if( n<=0 ) return 0; int arr[1000] = {0, 1}; int i; if( n>0 && n<2 ) return arr[n]; for( i=2; i<=n; i++ ) arr[i] = 2 * arr[i-1]; return arr[n]; }
最新回复(0)