Csharp/C#教程:如何在y列中尽可能均匀地分布x项?分享


如何在y列中尽可能均匀地分布x项?

我收集了一些物品。 我也有可能会改变的动态列数。

我需要一个算法,将我的项目重新分配到存储桶中,以便我可以将它们绑定到UI。 我想填充然后穿过,但是首先填充宽度。

我希望尽可能使用最均匀和最矩形的分布。

这种安排是错误的,因为它没有填充第9列。

1 2 3 4 5 6 7 8 9 ADGJMPSV BEHKNQTCFILORU 

这种安排是正确的,虽然不太理想……

  1 2 3 4 5 6 7 8 9 ADGJMPSUV BEHKNQT CFILOR 

…而不是这个,在视觉上更加平衡。

  1 2 3 4 5 6 7 8 9 ADGJMOQSU BEHKNPRTV CFIL 

谢谢。 这是Q&A,我已经解决了。

这将平衡桶中的项目与“左侧偏差”。

上述就是C#学习教程:如何在y列中尽可能均匀地分布x项?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

  public static T[][] FillBucketsEvenly(IEnumerable items, int bucketCount) { int itemsPerBucket = items.Count() / bucketCount; int countOfBucketsTakingExtraOne = items.Count() % bucketCount; T[][] buckets = new T[bucketCount][]; // Build empty array structure. for (int i = 0; i < bucketCount; i++) { if (i < countOfBucketsTakingExtraOne) { buckets[i] = new T[itemsPerBucket + 1]; } else { buckets[i] = new T[itemsPerBucket]; } } // Fill the structure. int itemsAdded = 0; foreach(var bucket in buckets) { int grabSize = bucket.Count(); var grab = items.Skip(itemsAdded).Take(grabSize); for (int i = 0; i < grabSize; i++) { bucket[i] = grab.ElementAt(i); } itemsAdded += grabSize; } return buckets; } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1006551.html

(0)
上一篇 2021年12月29日
下一篇 2021年12月29日

精彩推荐