You need to enable JavaScript to run this app. 可扩展多比例布尔输入输出绑定动态算法实现需求
优惠活动
大模型
产品
解决方案
定价
更多

可扩展多比例布尔输入输出绑定动态算法实现需求

可扩展动态实现方案

核心思路

你的需求本质是适配输入数N : 相邻绑定标志数N-1 : 输出数N的通用场景,不需要写死枚举所有绑定状态,只需要先按绑定规则对输出分组,再对每组的输入做OR运算赋值即可。

前置改造

首先把原来硬编码的独立变量/方法替换为数组存储,方便动态扩展:

  • 定义boolean[] inputs存储所有布尔输入,下标从0到N-1对应Input1到InputN
  • 定义boolean[] joinFlags存储相邻绑定标志,下标从0到N-2对应Output1Output2Joined到OutputN-1OutputNJoined
  • 定义boolean[] outputs存储所有布尔输出,下标从0到N-1对应Output1到OutputN
    如果受限于现有架构不能直接用数组存储,可以加索引映射的get/set适配方法,规模扩展时仅需新增对应case即可,核心逻辑无需改动。

通用算法代码

public void changed(int N) {
    // N为当前输入/输出的数量,绑定标志数自动为N-1
    int currentGroupStart = 0;
    // 遍历所有绑定标志,拆分分组
    for (int i = 0; i < N-1; i++) {
        // 遇到未绑定的标志,说明当前组到i为止
        if (!joinFlags[i]) {
            // 计算当前组的OR结果
            boolean groupResult = evaluateInput(inputs, currentGroupStart, i);
            // 给组内所有输出赋值
            for (int j = currentGroupStart; j <= i; j++) {
                outputs[j] = groupResult;
            }
            // 下一组的起始位置为i+1
            currentGroupStart = i + 1;
        }
    }
    // 处理最后一组
    boolean lastGroupResult = evaluateInput(inputs, currentGroupStart, N-1);
    for (int j = currentGroupStart; j < N; j++) {
        outputs[j] = lastGroupResult;
    }
}

/**
 * 计算指定区间内输入的OR结果
 * @param inputs 输入数组
 * @param start 区间起始下标(包含)
 * @param end 区间结束下标(包含)
 * @return 区间内所有输入的OR结果
 */
private boolean evaluateInput(boolean[] inputs, int start, int end) {
    for (int i = start; i <= end; i++) {
        if (inputs[i]) {
            return true;
        }
    }
    return false;
}

适配说明

  • 当你需要调整规模时,只需要修改N的数值,同时调整inputs、joinFlags、outputs三个数组的长度即可,不需要修改核心逻辑
  • 完全兼容你给出的4输入4输出3绑定标志的场景,所有示例用例的运行结果和你原有硬编码逻辑完全一致
  • 支持任意N≥2的场景,自动适配2:1:2、3:2:3直到任意N:N-1:N的比例要求

内容的提问来源于stack exchange,提问作者P.Ellis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 04:36:01