如何在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