登台阶爬楼梯问题

登台阶爬楼梯问题

问题描述

有N个台阶,0<N<=50, 每次只跳1个或者3个台阶,输入N, 有多少种方式到达台阶终点

# 示例 1:
输入:n = 3
输出:2
解释:有两种方法可以爬到楼顶。
1.   1 阶 + 1 阶+1阶
2.   3阶

# 示例 2:
输入:n = 4
输出:3
解释:有两种方法可以爬到楼顶。
1.   1 阶 + 1 阶 + 1阶 +  1阶
2.   3阶 + 1阶
3.   1阶 + 3阶

很多时候我们自己对问题的描述所呈现的大都基于固有的思想,我们需要在固有的思想上怎么去优化这个问题才是重点。

-- 首先我们需要寻找规律 
台阶1   【1】   
台阶2   【11】
台阶3   【111,3】 
台阶4   【13 ,31 ,1111】       
台阶5   【113 ,311 ,131,111】        
台阶6   【1113,1131,1311,3111,111111,33】
台阶7   【11113 ,11131,11311,13111,31111,331,133,313,1111111】 

f(1) = 1 
f(2) = 1
f(3) = 2
f(4) = f(1) + f(3) = 3
f(5) = f(2) + f(4) = 4
f(6) = f(3) + f(5) = 6
f(7) = f(4) + f(6) = 9 
...
F(N) = F(N-3) + F(N-1)
其实很好理解:等台阶 只有两种:1 和 3  需要统计的是这两种的个数 也就是我们需要爬的总数。
第 n 级台阶的方案数是爬到第 n−1 级台阶的方案数和爬到第 n−3 级台阶的方案数的和.
递归
#普通递归  重复计算之前的树节点 时间复杂度 O(2^n)  空间复杂度(On)
#优化方法 在此基础上保存之前计算过的节点 使得时间复杂度(On)
def f1(n):
    if n==1:return 1
    elif n==2:return 1
    elif n==3:return 2
    else:
        res=f1(n-1)+f1(n-3)
        return res
        
[f1(i) for i in range(1,10)]
#[1, 1, 2, 3, 4, 6, 9, 13, 19]
#优化 存储之间计算的节点数据 如计算f(5)时  不必再次计算f(4)和f(2) 存储

 def f11(n):
        memo=[]
        if n == 0 or n == 1:
            return 1
        if memo[n] == -1:
            memo[n] = f11(n- 1, memo) + f11(n - 3, memo)
        return memo[n]
    # memo: [-1] * (n - 1)
    # -1 表示没有计算过,最大索引为 n,因此数组大小需要 n + 1
    return f11(n, [-1] * (n + 1))

动态规划

# 动态规划
def funa(n):
    if n<2:
        return 1
    if n>=2:
        dp = [0]*(n+1)
        dp[0] = 1
        dp[1] = 1
        dp[2] = 2
        for i in range(3,n+1):
            dp[i] = dp[i-1] + dp[i-3]
    return dp[n-1]
#空间复杂度O(n)  时间复杂度O(n)
[funa(i) for i in range(1,10)]
#[1, 1, 2, 3, 4, 6, 9, 13, 19]
滚动数组
#动态规划
def f3(n):
    if n==0:return 0#初始化前3项
    if n==1:return 1
    if n==2:return 1
    if n==3:return 2
    p,q,r=1,1,2
    # 从第4项开始遍历,由于n算在结果中,故range第二个数为n+1,区间为[3, n+1)
    for i in range(4,n+1):#节省空间  不使用数组
        p ,q, r = q , r ,(r+p)#每一项都是 前i-1  和 前 i-3  通过移动状态
    return r
# 时间复杂度:循环执行 nn 次,每次花费常数的时间代价,故渐进时间复杂度为 O(n)。
# 空间复杂度:这里只用了常数个变量作为辅助空间,故渐进空间复杂度为 O(1)。
[f3(i) for i in range(1,10)]
#[1, 1, 2, 3, 4, 6, 9, 13, 19]
<think>嗯,用户想通过FileZilla连接NAS设备。首先,我需要回忆一下FileZilla的基本配置步骤,以及NAS可能需要的设置。根据之前的引用资料,FileZilla支持SFTP协议,默认端口是22。但NAS可能有不同的配置,所以得确认一下他们的默认端口是否正确。 然后,用户可能需要安装FileZilla客户端。引用[1]提到了官网下载地址,应该先指导用户下载并安装。接下来是配置连接参数,比如主机名、端口、协议类型、用户名和密码。根据引用[2]和[3],使用SFTP协议连接群晖或Linux服务器时,端口是22,但不确定NAS是否相同。可能需要用户查看NAS的文档,或者默认使用22端口,如果不行再调整。 另外,引用[5]提到连接建立但无法显示目录的问题,可能是防火墙或权限问题。在教程里应该提醒用户检查这些方面。比如,确保NAS的SSH服务开启,防火墙允许22端口,以及用户是否有访问权限。此外,可能需要生成SSH密钥对,特别是如果NAS要求密钥认证的话,如引用[3]中的设置root密码步骤,但这里可能涉及密钥配置。 还需要考虑是否需要被动模式设置,但根据引用[5],被动模式可能涉及更多服务器配置,所以暂时先建议用户使用主动模式,或者根据实际情况调整。另外,连接后的文件传输步骤也是必要的,比如如何上传下载文件,确保用户知道基本操作。 可能的问题包括连接失败、认证错误、目录不显示等,需要给出对应的解决方法。比如检查IP和端口是否正确,确认服务开启,以及用户权限是否足够。还要提醒用户如果使用公网IP,可能需要配置DDNS或端口转发,如引用[2]中提到的公网环境连接群晖的情况。 最后,生成相关问题,比如如何排除连接问题,优化传输速度,或者其他NAS系统的区别。这些能帮助用户进一步了解相关知识点。</think>### 通过FileZilla连接NAS的详细教程 #### 一、准备工作 1. **下载安装FileZilla客户端** 访问官网下载地址:[FileZilla客户端下载页面](https://filezilla-project.org/download.php?type=client),点击“Download FileZilla Client”完成安装[^1]。 2. **确认NAS的网络配置** - 确保NAS已开启SSH/SFTP服务(默认端口通常为22)。 - 若通过公网连接,需配置DDNS或公网IP,并在路由器中设置端口转发(例如将外部22端口映射到NAS的22端口)[^2]。 --- #### 二、连接步骤 1. **打开FileZilla客户端** 点击顶部菜单栏的“文件” → “站点管理器” → “新站点”。 2. **填写连接参数** - **协议**:选择 `SFTP - SSH File Transfer Protocol`(NAS一般使用SFTP协议)[^3] - **主机**:输入NAS的IP地址(局域网IP或公网IP/DDNS域名) - **端口**:默认22,若NAS自定义端口则需修改 - **登录类型**:选择“正常” - **用户**:输入NAS的登录用户名(如`admin`) - **密码**:输入对应用户的密码 ```plaintext 示例配置: 协议: SFTP 主机: sftp://fnas.example.com 或 192.168.1.100 端口: 22 用户: admin 密码: ******** ``` 3. **连接验证** - 点击“连接”,首次连接会提示SSH密钥确认,勾选“始终信任此主机”后确认[^4] - 成功连接后,右侧“远程站点”窗口会显示NAS的目录结构。 --- #### 三、常见问题解决 1. **连接失败** - 检查NAS的SSH/SFTP服务是否启用。 - 确认防火墙或路由器未阻止22端口(公网需配置端口转发)[^2]。 - 若提示“Connection timed out”,可能是IP地址或端口错
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Elvis_hui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值