joh*_*ohn 4 iphone algorithm math objective-c combinatorics
假设我有10个盒子和4种不同类型的彩球:黑色,蓝色,红色,绿色.我想在10个盒子中以大致相等的比例分配不同颜色的球.例如,一个可接受的解决方案是在10个盒子中放置2个黑色,2个蓝色,3个红色和3个绿色球.
现在,更具体地说,假设我有10个UIImageViews,以及可变数量的UIImages(Facebook,Twitter,Flickr等)放入这些UIImageViews中.如果我允许用户关闭某种类型,则可以有可变数量的类型(全部三种,只有两种,只有一种等).是否有一种有效的算法将可变数量的对象分配到静态数量的框中?
我能想到的最直接的方式,但我觉得它非常低效,就是有一个for循环,只需将每种类型的球(UIImage)的数量增加到一个盒子(UIImageView)中,直到球的总数为止等于盒子的数量.有没有更好的办法?
我想我会按照你的要求去做.
看起来你正在寻找一种div和mod数学.基本上长的分裂和剩余就像我们在二年级学习.我担心在目标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球.
上述结果如下:
numOfBoxes:11
numOfBallTypes:4
commonNumOfAllBallTypesInBoxes:2
numOfExtraBallTypes:3
它适用于任何动态:
numOfBoxes:73
numOfBallTypes:11
commonNumOfAllBallTypesInBoxes:6
numOfExtraBallTypes:7
我希望这有帮助.