题解 | #跳台阶扩展问题#
跳台阶扩展问题
https://www.nowcoder.com/practice/953b74ca5c4d44bb91f39ac4ddea0fee?tpId=230&tqId=2361300&ru=%2Fpractice%2Fbfb2a2b3cdbd4bd6bba0d4dca69aa3f0&qru=%2Fta%2Fdynamic-programming%2Fquestion-ranking&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26tab%3D%25E7%25AE%2597%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D230
#include <stdio.h>
int main() {
int n,f[21];
f[1] = 1;
scanf("%d",&n);
if(n == 1){
printf("1");
return 0;
}
for(int i=2; i<=n; i++){
f[i] = 2*f[i-1];
}
printf("%d",f[n]);
return 0;
}
数学公式推导:
f(n)=f(n-1)+f(n-2)+……+f(2)+f(1) …… ①
f(n-1)=f(n-2)+……+f(2)+f(1) ……②
由①-②得,
f(n) - f(n-1) = f(n-1)
移项得,
f(n) = 2*f(n-1)
OPPO公司福利 1250人发布