gpt4 book ai didi

c# - 替代 C# 中的二维数组

转载 作者:行者123 更新时间:2023-11-30 21:50:57 25 4
gpt4 key购买 nike

我必须在任何数据结构中存储两种类型的信息,以便我在 C# 中提出二维数组的废弃解决方案。我必须存储为:

  • 簇数 int 数据类型
  • 集群成员数 int 数据类型

如果我将二维数组用作:

Int32[,] _clusterMembership = new Int32[10, 10];

但是这里的问题是:

  • 我不知道集群的总数量是多少?
  • 我不知道每个集群会有多少成员

所以问题是:我如何设法在 C# 中存储此信息?

附录
我必须在此方法中使用此问题的答案作为:

   public static List<Cluster> DP_Cluster(List<string> _customer, double _alpha)
{
var _currentClusters = 0; // current number of clusters i.e. "k"
var _memberNumber = 0; // running member number i.e. "n"
//var _dic = new Dictionary<int, List<string>>();
var _probOld = 0.0;
var _probNew = 0.0;


List<Cluster> myClusters = new List<Cluster>();
Cluster cluster = new Cluster(_currentClusters += 1);
cluster.Members.Add(new ClusterMember { Name = _customer.ElementAt(_memberNumber) });
myClusters.Add(cluster);

//_dic.Add(_currentClusters, _customer.ElementAt(_memberNumber));
_currentClusters += 1;

for(int _i = 1; _i < _customer.Count - 1; _i++)
{
if( _i <= _currentClusters)
{
_probOld = myClusters[_i].Members.Count / ((_i+1) - 1 + _alpha);
}
else
{
_probNew = _alpha / ((_i+1) - 1 + _alpha);
}

if(_probNew > _probOld)
{
// Add _customer.ElementAt(_memberNumber+=1) to New Cluster
Cluster cluster = new Cluster( _currentClusters += 1 ); // Here is an error as we defining same name for another cluster
myClusters.Add(cluster);
}
else
{
// Add _customer.ElementAt(_memberNumber+=1) to Old Cluster
}
}

return myClusters;
}
  • 我应该如何更新我的方法以获得期望的结果?

最佳答案

你应该考虑制作两种类型,一种用于集群,一种用于成员:

成员

public class ClusterMember
{
public string Name {get;set;}
// more properties...
}

集群

public class Cluster
{
public int ID {get;}
public List<ClusterMember> Members {get;}
public Cluster(int id)
{
ID = id;
Members = new List<ClusterMember();
}
}

然后您可以将集群存储在列表中

List<Cluster> myClusters = new List<Cluster>();
Cluster cluster = new Cluster(1);
cluster.Members.Add(new ClusterMember { Name = "Member1" });
myClusters.Add(cluster);

更新 我假设您想对数据做更多的事情,而不仅仅是存储这两个信息,并尝试提供更好的面向对象的方法。

获取计数:

int totalNumberOfClusters = myClusters.Count;
int numberOfMembersInOneCluster = cluster.Members.Count;
int totalNumberOfClusterMembers = myClusters.Sum(c => c.Members.Count);

并输出每个集群的成员数量:

foreach(Cluster c in myClusters)
Console.WriteLine($"Cluster {c.ID} has {c.Members.Count} members.");

关于c# - 替代 C# 中的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36014086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com