40元红包发10个人,每个人最多发6块解决方案。
2016-07-25 10:50
302 查看
Divide(10,40,6); function Divide(p,m,a){ /*传入人数,总金额,单人上限*/ var arr=[]; nm=m*100; na=a*100; /*乘100,便于运算*/ l=p; /*每次遍历后剩余人数*/ for(i=0;i<p-1;i++){ l--; arr[i]=roll(nm,l); /*传入剩余金额及人数*/ nm-=arr[i]; /*剩余金额*/ } arr[p-1]=nm; /*最后一个人不用分*/ if(arr[p-1]>na){ return Divide(p,m,a); } /*最后一个人如超过上限,重新分*/ return arr.map(function(v,i,arr){ return v=v/100; }); /*分好了,每个数重新除以100,输出结果*/ /*定义随机函数,传入剩余金钱和人数*/ function roll(o,l){ var b=o-l; /*每个人至少分1分钱*/ var Max=Math.min(na,b); return Math.ceil(Math.random()*Max); } }
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解