You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术问询:如何从给定绝对路径中筛选出含等量底层文件的L个根文件夹

问题描述

给定N个最大长度为M的绝对文件路径,这些路径分布在K个任意层级嵌套的文件夹中,需要找出L个根文件夹(L≤K),使得每个文件夹包含的底层文件数量尽可能相等。

示例输入路径:

/folderA/file1
/folderA/folderB/file2
/folderA/folderB/file3
/folderA/folderB/folderC/file4
/folderD/file5
解决步骤
  • 构建文件系统树
    解析所有文件路径,建立层级树结构,每个节点对应一个文件夹。为每个文件夹节点计算其底层文件总数:即该文件夹及其所有子文件夹中包含的文件总量。
  • 生成候选文件夹列表
    收集所有文件夹节点,需注意:若一个文件夹是另一个的子文件夹,两者不能同时作为候选(否则会重复统计文件)。
  • 选择最优L个文件夹
    计算目标平均值:总文件数 / L。从候选列表中挑选L个互不包含的文件夹,要求它们的文件数总和等于总文件数,且每个文件夹的文件数尽可能接近目标平均值。可采用贪心算法优先选择最接近平均值的节点,再从剩余未覆盖文件中继续筛选;或用动态规划方法找到最均衡的组合。
示例演示

以给定示例输入为例:

  • 总文件数:5
  • 各文件夹的底层文件数:
    • /folderA:4(包含file1、file2、file3、file4)
    • /folderA/folderB:3(包含file2、file3、file4)
    • /folderA/folderB/folderC:1(仅包含file4)
    • /folderD:1(仅包含file5)

假设L=2,目标平均值为2.5:
唯一符合条件的组合是/folderA(4个文件)和/folderD(1个文件)——其他组合(如/folderA/folderB和/folderA)存在包含关系,会重复统计文件,不符合要求。

若L=3,目标平均值约为1.67:
由于前三个文件夹存在嵌套包含关系,无法同时选择三个互不包含的现有文件夹覆盖所有文件,只能选择最接近均衡的组合,比如/folderA/folderB/folderC(1)、/folderD(1),再结合/folderA中独立于/folderA/folderB的文件(file1),但这部分没有对应独立文件夹,因此实际只能接受一定程度的不均衡。

内容的提问来源于stack exchange,提问作者chicken-rice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 06:05:23