当前位置: 首页 > wzjs >正文

购物网站 怎么做免费网站创建

购物网站 怎么做,免费网站创建,fiverr找人做网站靠谱吗,wordpress插件打包下载题目描述 一个楼梯共有 n级台阶,每次可以走一级或者两级,问从第0级台阶走到第n级台阶一共有多少种方案。 输入格式 共一行,包含一个整数 n 输出格式 共一行,包含一个整数,表示方案数。 数据范围 1≤n≤45 样例 输…

题目描述


一个楼梯共有 n级台阶,每次可以走一级或者两级,问从第0级台阶走到第n级台阶一共有多少种方案。

输入格式

共一行,包含一个整数 n

输出格式

共一行,包含一个整数,表示方案数。

数据范围

1≤n≤45



样例

输入样例:

5
输出样例:

8

代码一(暴力的BFS):

#include <stdio.h>int climbStairs(int x) {if (x == 1) {return 1;}else if (x == 2) {return 2;}else {return climbStairs(x - 1) + climbStairs(x - 2);}}int main() {int n;printf("请输入楼梯的阶数:");scanf("%d", &n);int ways = climbStairs(n);printf("%d 阶楼梯一共有 %d 种跳法。\n", n, ways);return 0;
}

代码过程分析:

        climbStairs(5)/        \/          \climbStairs(4)  climbStairs(3)/      \          /     \/        \        /       \
climb(3)  climb(2) climb(2) climb(1)/  \       |        |        |/    \      |        |        |
c(2) c(1)   2        2        1|     |2     1

climbStairs(5)
= climbStairs(4) + climbStairs(3)
= [climbStairs(3) + climbStairs(2)] + [climbStairs(2) + climbStairs(1)]
= [ [climbStairs(2) + climbStairs(1)] + 2 ] + [2 + 1]
= [ [2 + 1] + 2 ] + 3
= [3 + 2] + 3
= 5 + 3
= 8
步骤分解
  1. climbStairs(5)

    • 调用 climbStairs(4) 和 climbStairs(3),等待它们的返回值。

  2. 计算 climbStairs(4)

    • 调用 climbStairs(3) 和 climbStairs(2),等待返回值。

    • 计算 climbStairs(3)

      • 调用 climbStairs(2) 和 climbStairs(1)

        • climbStairs(2) 返回 2(基准条件)。

        • climbStairs(1) 返回 1(基准条件)。

      • 合并结果:2 + 1 = 3

    • 计算 climbStairs(2)

      • 直接返回 2(基准条件)。

    • 合并结果:3 + 2 = 5

    • climbStairs(4) 返回 5

  3. 计算 climbStairs(3)

    • 调用 climbStairs(2) 和 climbStairs(1)

      • climbStairs(2) 返回 2

      • climbStairs(1) 返回 1

    • 合并结果:2 + 1 = 3

    • climbStairs(3) 返回 3

  4. 合并最终结果

    • climbStairs(5) = climbStairs(4) + climbStairs(3) = 5 + 3 = 8

    • 对结果取模 1e9 + 7(因 8 < 1e9 + 7,结果仍为 8)。

代码二(记忆化搜索):

#include <stdio.h>
const int N=45;
int mem[N];
int climbStairs(int x) {if(mem[x]) return mem[x];int sum=0;if (x == 1) {sum=1;}else if (x == 2) {sum=2;}else {sum=climbStairs(x - 1) + climbStairs(x - 2);}mem[x]=sum;return sum;}int main() {int n;printf("请输入楼梯的阶数:");scanf("%d", &n);int ways = climbStairs(n);printf("%d 阶楼梯一共有 %d 种跳法。\n", n, ways);return 0;
}

代码过程分析:

        climbStairs(5) → 8/           \/             \climbStairs(4) →5  [climbStairs(3) →3 (cached)]/        \               /     \/          \             /       \
climb(3)→3  climb(2)→2  climb(2)→2  climb(1)→1 (cached)/    \/      \
c(2)→2  c(1)→1 (cached)
记忆化数组 mem 的最终状态
索引1	2	3	4	5
值	1	2	3	5	8
  • 步骤分解
  • 初始化全局数组 mem
    所有元素初始值为 0

  • 调用 climbStairs(5)

    • 检查 mem[5] 是否为 0(初始为 0),进入计算分支。

    • 递归调用 climbStairs(4) + climbStairs(3)

  • 计算 climbStairs(4)

    • mem[4] = 0,进入计算分支。

    • 递归调用 climbStairs(3) + climbStairs(2)

      • 计算 climbStairs(3)

        • mem[3] = 0,进入计算分支。

        • 递归调用 climbStairs(2) + climbStairs(1)

          • 计算 climbStairs(2)

            • mem[2] = 0,赋值 sum = 2,存入 mem[2] = 2,返回 2

          • 计算 climbStairs(1)

            • mem[1] = 0,赋值 sum = 1,存入 mem[1] = 1,返回 1

        • sum = 2 + 1 = 3,存入 mem[3] = 3,返回 3

      • 计算 climbStairs(2)

        • mem[2] = 2(已缓存),直接返回 2

    • sum = 3 + 2 = 5,存入 mem[4] = 5,返回 5

  • 计算 climbStairs(3)(在 climbStairs(5) 中)

    • mem[3] = 3(已缓存),直接返回 3

  • 合并结果

    • climbStairs(5) = 5 (climbStairs(4)) + 3 (climbStairs(3)) = 8

    • 存入 mem[5] = 8,最终返回 8

  • 记忆化存储每个 climbStairs(x) 的结果存入 mem[x],避免重复计算。

  • 递归逻辑

    • climbStairs(x) = climbStairs(x-1) + climbStairs(x-2)(斐波那契数列)。

    • 基准条件:x=1 返回 1x=2 返回 2

代码三(递归(dp)):

#include <stdio.h>
const int N=45;
int f[N];
int n;
int main() {scanf("%d",&n);f[1]=1,f[2]=2;if(n==1||n==2){printf("%d",f[n]);return 0;}for(int i=3;i<=n;i++){f[i]=f[i-1]+f[i-2];}printf("%d",f[n]);return 0;
}

http://www.dtcms.com/wzjs/309591.html

相关文章:

  • 广告网站做动图怎么做太原百度seo排名软件
  • 泸州网站开发seo发帖网站
  • 网站老是快照打开中国企业500强最新排名
  • 网站开发总结自助建站平台
  • 考试网站开发的可行性分析外贸seo网站
  • 门户网站系统设计百度手机版网页
  • 单仁营销网站的建设网络营销的工作内容包括哪些
  • 新都有没有做网站的全域seo
  • 从什么网站找做app的代码网络推广理实一体化软件
  • 公司支付网站服务费怎么做分录网站建设平台
  • 论文做系统简单还是网站简单二十条优化措施
  • 网站建设公司财务预算江苏做网站的公司有哪些
  • 简单的美食网站模板软文推广发稿
  • 个人网站可以做经营性网站产品软文撰写
  • 泰安网站建设公司哪家好网络整合营销4i原则
  • 如何用手机建网站seo免费浏览网站
  • 怎么接做网站的任务爱站网怎么使用
  • 学做衣服网站郑州网站建设哪家好
  • 嘉兴手机网站建设北京seo服务销售
  • 科技经济导刊官网亚马逊seo是什么意思
  • 做彩票网站犯法不sem是什么岗位
  • 莞城做网站公司今天新闻最新消息
  • 如何开发动态网站全自动引流推广软件app
  • 可以做很多个网站然后哭推广信息流广告哪个平台好
  • 深圳网站维护seo百度推广联系方式
  • 渭南免费做网站友链申请
  • 网上翻译网站做译员如何建立自己的网站
  • wordpress和dedecms武汉seo百度
  • 模板网站制作平台怎样申请网站
  • 教育培训网站有哪些百度推广怎么登陆