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

求无重复n选k排列生成的Google Apps Script实现方案

Google Apps Script 实现n选k无重复排列生成与实时筛选

以下是可直接使用的Google Apps Script代码,支持自定义元素池大小n、选取数量k,并能实时过滤符合条件的排列结果:

核心排列生成函数

// 生成从元素池中选取k个元素的所有无重复排列
function generatePermutations(elements, k) {
  const result = [];
  
  // 递归生成排列
  function backtrack(current, remaining) {
    if (current.length === k) {
      result.push([...current]);
      return;
    }
    
    for (let i = 0; i < remaining.length; i++) {
      // 选择当前元素
      current.push(remaining[i]);
      // 递归处理剩余元素(排除已选的)
      backtrack(current, [...remaining.slice(0, i), ...remaining.slice(i + 1)]);
      // 回溯,移除当前元素
      current.pop();
    }
  }
  
  backtrack([], elements);
  return result;
}

主函数:自定义参数与结果筛选

function main() {
  // 自定义参数:n为元素池大小,k为选取数量
  const n = 8;
  const k = 3;
  
  // 生成元素池(示例:1到n的整数)
  const elements = Array.from({length: n}, (_, i) => i + 1);
  
  // 生成所有排列
  const allPermutations = generatePermutations(elements, k);
  
  // 实时筛选符合条件的结果(示例:筛选第一个元素 > 第二个元素的排列)
  const filteredPermutations = allPermutations.filter(perm => perm[0] > perm[1]);
  
  // 输出结果到日志(可替换为写入Google表格等操作)
  console.log(`总排列数:${allPermutations.length}`);
  console.log(`符合条件的排列数:${filteredPermutations.length}`);
  console.log('符合条件的排列示例:', filteredPermutations.slice(0, 5)); // 输出前5个示例
  
  // 可选:将结果写入Google表格
  // const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // sheet.clearContents();
  // filteredPermutations.forEach((perm, index) => {
  //   sheet.getRange(index + 1, 1, 1, perm.length).setValues([perm]);
  // });
}

使用说明

  • 打开Google表格,点击扩展程序 > Apps脚本进入脚本编辑器
  • 将上述代码粘贴到编辑器中
  • 修改main函数中的n和k参数,调整筛选条件(修改filter中的判断逻辑)
  • 运行main函数,查看日志或表格中的结果

关键自定义点

  • 元素池修改:如果元素不是1到n的整数,直接替换elements数组即可(例如['a', 'b', 'c'])
  • 筛选条件:根据需求修改filteredPermutations中的过滤逻辑,比如判断元素和为某个值、包含特定元素等
  • 输出方式:注释中的代码可将结果直接写入表格,适合批量查看

内容的提问来源于stack exchange,提问作者Frank

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:30:59