非递减序列(python)

思路:

非递减子序列 ,也是一种子集问题,也需要在进入递归就收集答案。这里需要注意,因为要求是序列,所以不能排序,这里需要使用set()在树层去重。同时,对于当前遍历到的元素,不能比path里面的小,如果小,则跳过该元素的搜索。

复制代码
#非递减序列 也是一种子集问题
#有顺序要求,所以不能排序,要用set在树层去重
def f(nums):
    res=[]
    path=[]
    n=len(nums)
    def dfs(start_idx):
        if len(path)>1:  #长度大于2才收集
            res.append(path[:])
        st=set()
        for i in range(start_idx,n):
            if (path and nums[i]<path[-1]) or nums[i] in st:  #去重逻辑
                continue
            st.add(nums[i])
            path.append(nums[i])
            dfs(i+1)
            path.pop()
    dfs(0)
    print(res)
    return res
def main():
    nums=list(map(int,input().split()))
    f(nums)
if __name__=="__main__":
    main()
相关推荐
VidDown5 小时前
24fps 转 25fps 不只是改个数字:帧率转换、PAL/NTSC 与音频补偿
python·网络协议·音视频·视频编解码·视频
死磕音视频7 小时前
让小模型做选择题:限定候选项并读取 logits 概率的入门实践(附 Python 代码)
开发语言·python·大模型·文本分类·transformers
凤山老林7 小时前
Spring Boot 接入国密 SM2/SM3/SM4 的一些实践记录
spring boot·后端·python
pride.li9 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
databook9 小时前
用 Pydantic AI 从零搭建一个能干活的 AI Agent
人工智能·python
康小旺9 小时前
把 markitdown 做成 Windows 桌面版:拖进文档就出 Markdown,附 233MB→64MB 打包裁剪全过程
python
启观川10 小时前
数据结构与算法-第 3 章 常用算法-贪心算法
数据结构·笔记·python·算法·贪心算法
南笙北梦10 小时前
本地开源大模型多轮对话显存泄漏排查与修复实录
python
小羊没烦恼!11 小时前
如何在IIS6,7中部署ASP.NET网站?
数据库·后端·python·web安全·asp.net
钱栈up11 小时前
扫完 3.5 万文件后,我发现了 521 组散落的同名文件
爬虫·python·数据分析