c# - 如何管理多个不断增长的列表?

标签 c# .net list min

该程序首先收集游戏中盟军/敌方仆从的数量。

 var eminions = MinionManager.GetMinions(Player.ServerPosition, 1500 MinionTypes.All, MinionTeam.Enemy).ToList();
 var aminions = MinionManager.GetMinions(Player.ServerPosition, 1500, MinionTypes.All, MinionTeam.Ally).ToList();

然后我使用一个函数将列表中找到的每个对象转换为距离:

 emd.Add(eminions[0].ServerPosition.Distance(aminions[i].ServerPosition)); //the count is 5

我们的列表“emd”包含 (aminions.Count) 个距离,在我们的示例中 = 5。

emd[0] = 500
emd[1] = 400
emd[2] = 300
emd[3] = 200
emd[5] = 100

这是棘手的地方,我们想找出最小距离在列表中的位置。如果我们进行理论化,我们可以看到它是 emd[5] = 100。但是我如何得到“5”?

总结:程序必须找到列表中最小的数,然后得到它在列表中找到它的位置。

这是我尝试过的:我尝试比较每个数字以查看最小的数字,如果为真,则添加到新列表中,我面临的问题是我创建了太多列表而且我不准备处理不同数量的小兵.

var eminions = MinionManager.GetMinions(Player.ServerPosition, 1500, MinionTypes.All, MinionTeam.Enemy).ToList();
var aminions = MinionManager.GetMinions(Player.ServerPosition, 1500, MinionTypes.All, MinionTeam.Ally).ToList();
if (eminions.Count > 0 && aminions.Count > 0)
{
    List<double> emd = new List<double>();
    List<bool> bdistance = new List<bool>();
    for (int i = 0; i < aminions.Count; i++)
    {
        emd.Add(eminions[0].ServerPosition.Distance(aminions[i].ServerPosition));

        for (int j = 0; j < aminions.Count; j++)
        {
            if (emd[i] > emd[j])
            {
                bdistance.Add(true);
            }
        }   
    }
}

最佳答案

int pos = 0; // set index to zero
int min = emd[0]; // set minimum to first value
for (int i = 1; i < emd.Count; i ++)
{
    var val = emd[i]; // get value from position
    if (val < min) //check if value is smaller then current minimum
    {
        // set minimum to value
        min = val;
        // set minimum pos to current value pos
        pos = i;
    }
}
//found minimum
//minimum index == pos

关于c# - 如何管理多个不断增长的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34566462/

相关文章:

c# - System.Threading.Timer 和 49.7 天计时器滚动更新

c# - Android 上的 .NET 框架

C++ 如何创建 std::list 数组?

python - Python中使用哈希获取两个对象列表之间的差异

c# - 用正则表达式替换部分单词

c# - 有没有办法在构造函数中初始化 EII 属性?

c# - 将 Web 表单 aspx 页面添加到 WCF 项目

c# - XElement 'Add' 没有做对吗?

c# - 统一: Change default lifetime manager for implicit registrations and/or disable them

c# - Powershell 等效于 C# List with Coordinates