结合失踪

克罗夫·弗拉德

所以我是C#的新手,我已经完成了以下任务:

我有一个身份不明的人数清单(例如5人)。任务是获取列表中此人与之后的人不能在同一组中的人群。

例如:5人

{1},{2},{3},{4},{5},{1,3},{1,4},{1,5},{2,4},{2,5}, {3,5},{1,3,5}

我从http://www.codeproject.com/Articles/26050/Permutations-Combinations-and-Variations-using-CG链接中使用了组合方法,并且我有此代码

private void button3_Click(object sender, EventArgs e)
    {
        outputBox.Clear();
        int nr = Convert.ToInt32(nmbrBox.Value);
        double tmp = Math.Pow(2, nr);
        double combs = tmp - 1;
        List<int> list = new List<int>();
        for (int i = 1; i <= nr; i++ )
        {
            list.Add(i);
        }

        outputBox.AppendText(combs.ToString() + " combinari\n\n");

        List<string> allCombinations = new List<String>();
        for (int i = 1; i <= list.Count; i++)
        {
            var combis = new Facet.Combinatorics.Combinations<int>(list, i, Facet.Combinatorics.GenerateOption.WithoutRepetition);
            allCombinations.AddRange(combis.Select(c => string.Join("", c)));
        }

        foreach (var combi in allCombinations)
        {            
            outputBox.AppendText(combi + "\n");
        }
    }

如何使它只显示我想要的结果?

笑声

我可以提供一个简单的解决方案。考虑到您的group字符串格式为“ 1 2 3”或“ 1”或“ 1 2”,因此allCombinations中的foreach组使用如下验证方法:

public static bool IsGroupValid(string group)
{
    var indexes= group.Split(' ').Select(x=>Int32.Parse(x)).ToList();
    for (int i = 0; i < indexes.Count; i++)
    {
        if (indexes.Any(x=>x+1==indexes[i]))
            return false;
    }
    return true;
}

所以看起来像这样:

foreach (var combi in allCombinations)
{        
    if(IsGroupValid(combi))    
        outputBox.AppendText(combi + "\n");
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

失踪儿童

来自分类Dev

失踪儿童

来自分类Dev

结合实际案例咨询j2objc

来自分类Dev

如何将锈蚀的寿命结合起来?

来自分类Dev

将原生移动开发与Xamarin结合起来

来自分类Dev

结合实际案例咨询j2objc

来自分类Dev

ibeacons和geofencing结合起来很快

来自分类Dev

密码生成器结合实际单词

来自分类Dev

在UNIX中将粘贴和猫结合起来

来自分类Dev

在 Haskell 中将元素与概率结合起来

来自分类Dev

如何将 ramda 与重构结合起来?

来自分类Dev

结合点击和双击离子事件

来自分类Dev

垂直结合水平偏移的图像

来自分类Dev

月食在月食失踪的树

来自分类Dev

失踪 ; 声明前?

来自分类Dev

查尔斯·代理和失踪

来自分类Dev

听失踪的翻译事件

来自分类Dev

Haskell进口失踪H

来自分类Dev

我怎样才能将杂物和类似杂物的东西结合起来?

来自分类Dev

有什么办法可以将这两种方法结合起来吗?

来自分类Dev

如何将play框架和angular2结合起来?

来自分类Dev

如何轻松使用may monoid并将值与自定义操作结合起来?

来自分类Dev

如何将2种方式的数据绑定与模型驱动的表单结合起来?

来自分类Dev

可以将控制器列表参数与休眠条件结合起来吗?

来自分类Dev

Firebase:我可以将推送与多位置更新结合起来吗?

来自分类Dev

Haskell:如何将标量值和单子值结合起来?

来自分类Dev

EasyMock:将任意时间与严格的模拟结合起来

来自分类Dev

将WindowsAuthentication与存储在数据库中的规则结合起来

来自分类Dev

将Copy_To的属性/流畅映射与Nest结合起来