- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
假设我有 10 个盒子和 4 种不同类型的彩球:黑色、蓝色、红色、绿色。我想将不同颜色的球按大致相等的比例分配到 10 个盒子中。例如,一个可接受的解决方案是在 10 个盒子中放置 2 个黑色、2 个蓝色、3 个红色和 3 个绿色球。
现在,更具体地说,假设我有 10 个 UIImageView,以及要放置到这些 UIImageView 中的不同类型的 UIImage(Facebook、Twitter、Flickr 等)。如果我允许用户关闭某种类型,则可以有多种类型(全部三种、仅两种、仅一种等)。是否有一种有效的算法将可变数量的对象类型分配到静态数量的盒子中?
我能想到的最直接的方法,但我觉得它非常低效,是有一个 for 循环,只增加每种类型的球 (UIImage) 的数量以放入一个盒子 (UIImageView) 直到总数球的数量等于盒子的数量。有没有更好的办法?
最佳答案
我想我按照你的要求去做了。
您似乎在寻找一种 div 和 mod 数学。基本上是长除法和余数,就像我们在二年级学习的那样。恐怕我不知道 objective-c 中对此的正确简写。希望有人可以添加。
int numOfBoxes = 11;
int numOfBallTypes = 4;
int commonNumOfAllBallTypesInBoxes = numOfBoxes / numOfBallTypes; //this should be an int division result of 2
int numOfExtraBallTypes = numOfBoxes - (commonNumOfAllBallTypesInBoxes * numOfBallTypes); //this should be a remainder of 3)
因此,您知道要将每种球类型的 commonNumOfAllBallTypesInBoxes
添加到每个盒子中。然后,您知道要为每个盒子添加 numOfExtraBallTypes
个球类型中的 numOfBallTypes
个球。
上面的结果是:
盒子数量:11
numOfBallTypes:4
commonNumOfAllBallTypesInBoxes:2
numOfExtraBallTypes:3
它适用于任何动态:
盒子数量:73
numOfBallTypes:11
commonNumOfAllBallTypesInBoxes:6
numOfExtraBallTypes:7
希望对您有所帮助。
关于iphone - 鸽笼问题: Placing different types of UIImages into UIImageViews,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5877873/
我是一名优秀的程序员,十分优秀!