c# - 用于构建所有子集的函数
问题描述
我想创建一个创建所有子集列表的函数。例如 :
if list candid in step 1 is: {1,2,4,5}
output: {12,14,15,24,25,45}
and if list candid in step 2 is: {12,14,25,45} (15,24 deleted)
output: {124,125,145}
我在下面编写了代码,但此代码仅适用于构建坦率的第 2 步。
for (int i = 0; i < candid.Count; i++)
{
for (int j = i + 1; j < candid.Count; j++)
{
if(ratecandid[i] > 50)
{
candid_new.Add(int.Parse(string.Concat(candid[i], candid[j])));
}
}
}
我不认为这是一个好的代码。您能否提供适用于其他列表的适当解决方案?
更新:
一般来说,我们有一组数字。(1,2,4,5),在这个集合的另一个函数中定义了一个比率(100,101,94,172)(94代表4)。如果每个数字的比率小于50,则不选择这个数字。所以首先,选择所有成员,我们必须创建所有可能的子集。{12,14,15,24,25,45}。同样,对于这些成员,比率是确定的,(60,74,42,36,74,63,)。如果每个数字的比率(比率 12 为 60)小于 50,则不选择该数字。所以这个集合被选中{12,14,25,45},现在,我们必须创建所有可能的子集。{124,125,145}。
该集合必须按顺序排列(如:字母顺序),并且不应存在重复成员。121 和 122 有经常性会员
解决方案
由于您对速率的计算仍然未知,因此这里是一个部分的回答,它将为您提供所有可能的结果:
var result = new List<int> { };
for (int i = 0; i < candid.Count(); i++)
{
for (int j = i + 1; j < candid.Count(); j++)
{
var value =
int.Parse(
new string(
string.Concat(candid[i], candid[j])
.OrderBy(x => x)
.Distinct()
.ToArray()
)
);
if (true)
{
result.Add(value);
}
}
}
return result.Distinct().ToArray();
新的部分基本上是:
- 一旦 int 被连接。
- 删除其中的重复数字。
-命令他们。
- 如果它满足您的条件,则将其添加到结果中。
- 在返回结果之前确保它没有重复。瞧。
推荐阅读
- r - R/Shiny:如何检测重叠的圆形标记?
- ios - 如何获取有关 IPA 无法安装在 iPad/iPhone 上的原因的日志
- javascript - React Native - 将屏幕动画到它的 MapView.Marker
- java - 如何为 Set 指定 typeHandler
在mybatis? - sql - 无法从 information_schema.columns 加载数据到另一个物理表
- python - 优化字典键条件
- java - Java android room从两个表中获取java对象
- ansible - 将字符串附加到 Ansible 中的列表
- regex - 正则表达式。重叠组与捕获
- mymaps - 在 google mymaps 中使用纬度和经度导出在 gogle mymaps 中标记的位置