0
点赞
收藏
分享

微信扫一扫

通过一个总分,动态分配条数的平均分(取整)

跟着Damon写代码 2022-01-15 阅读 52
算法

通过一个总分,动态分配条数的平均分(取整)

  1. 遇到了一个需求,就是通过给定一个类型定义总分:例如21分
  2. 然后分配给多个题目:例如4个

原本的思路:

  1. 前面的分数全部都向下取整,最后一个分数向上取整
  2. 例如:21分,分配4个
  3. 那么21/4 = 5.25分
  4. 也就是前面3个是5分
  5. 最后一个是6分
  6. 刚好是21分
就在我觉得这样写可以的时候,问题来了
  • 当出现分数30分,分配4个的时候就出现问题了
  1. 30/4 = 7.5分
  2. 也就是前面3个是7分
  3. 最后一个是8分
  4. 但是这样子的话就出现 7+7+7+8 = 29分少一分的情况
最后的解决
  1. 先用30/4 = 7.5分 来向下取整7分
  2. 用 总分 即30 来模需要取整的个数 即4个 即 30%4 = 2
  3. 最后循环来判段
for(int i = 0; i < 4; i++) {
	score = score + (i < 2 ? 1 : 0);
}
  1. 判断我们需要的个数是否小于模出来的数,如果小于就+0,大于就+1
  2. 这样的话就是出现 7+1,7+1,7+0,7+0
  3. 这样的话就是8+8+7+7 等于30

这样就解决了平均分取整的问题了。

举报

相关推荐

0 条评论