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

如何在CPLEX中通过两个数组生成第三个数组

在CPLEX中生成两个数组的差集数组

要实现从第一个数组里剔除第二个数组包含的元素,生成目标第三个数组,你可以利用CPLEX的集合推导式和数组转换来完成,以下是完整可运行的代码示例:

int a=10;
range aa=1..a;
int b=3;
range bb=1..b;

// 先通过集合推导式筛选出差集元素
{int} diffSet = { firstarray[i] | i in aa : firstarray[i] not in { secondarray[j] | j in bb } };

// 根据差集的元素数量定义第三个数组的范围
range cc=1..card(diffSet);

int firstarray[a]=[1,2,3,4,5,6,7,8,9,10];
int secondarray[b]=[1,4,9];
// 将集合元素转换为数组
int thirdarray[cc] = [ diffSet[k] | k in cc ];

execute {
  writeln("生成的第三个数组:", thirdarray);
}

关键逻辑说明:

  • 用集合推导式diffSet筛选出firstarray中不在secondarray内的元素,集合会自动处理重复元素(如果原数组存在重复值)
  • 通过card(diffSet)获取差集的元素个数,以此定义第三个数组的索引范围cc
  • 最后用数组推导式把集合中的元素转换为目标数组thirdarray,通过execute块可以直接输出结果

运行代码后,thirdarray会得到预期的[2,3,5,6,7,8,10]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:25:33