c# - 降低从排列到组合的复杂性
问题描述
假设我有 6 个图像部分,在正确排列时形成一个图像。还假设我有两对零件,它们的位置可以互换,并且仍然可以形成相同的图像。现在,我想要所有可能的组合而不需要排列。我想从第一个地方开始,检查有多少部分适合那个地方,然后逐渐向最后一个地方移动。
List<List<int>> possible_combinations = new List<List<int>>();
for (int i = 0; i <= 6; i++)
{
foreach (var comb in possible_combinations)
{
List<int[]> best_combination = new List<int[]>();
for (int p = 0; p < comb.Count; p++)
best_combination.AddRange(allStrokes[comb[p]]);
if (!comb.Contains(i))
{
best_combination.AddRange(allStrokes[i]);
var fits = cs.checkFeasibility(best_combination);
if (fits)
comb.Add(i);
}
}
}
可能的组合已经可能包含所有第一个可能的部分图像 id。检查可行性将检查新组合的部分是否会改善迄今为止的结果。我怎样才能做到这一点。特此代码供理解参考。
解决方案
推荐阅读
- reactjs - 带有 optgroup 的 Material-ui 多选
- unity3d - 做圆周运动后预测汽车位置
- r - R中的函数:如何在同一函数内返回均值、中值、标准差
- android - Firestore 在查询中返回已删除的文档
- matlab - 修复 MATLAB 标题图中的额外空间
- python - 移动平均时间序列分钟 Pandas
- php - 在 laravel phpunit 上检测到恶意软件
- c# - 如何处理带有问号“?”的旧 aspx url 在不使用 IIS 的新 mvc 网站中
- reactjs - 如何使用 react-bootstrap 模式
- cypress - 从 cypress 测试运行程序运行时目录路径不正确