本文主要记录一些在工作、生活中遇到的有趣的算法,旨在用简单的代码给出过程和答案(基于目前编程水平的理解),不定期更新。
打印函数封装
为打印数据方便,简单自定义一个打印函数。
1 | /** |
“约瑟夫手环”
故事背景
一群人排成一圈,按1,2,…,30依次编号。然后从第1个开始数,数到第7个把他踢出圈,从他后面再开始数,再数到第7个,在把他踢出去,如此不停的进行下去,直到最后个剩下一个人为止,求出最后剩下的那个人是谁。
代码
1 | $arr = range(1,30); |
思路说明
- 解题关键点是不能被编号为1到30的人所迷惑,最直接的办法就是如上:设置一个变量,让他从零自增,自增到7再重新赋值为0,每次这个变量的值为7的时候,便把数组中循环了7次时对应的键删掉,核心逻辑就这么多;
unset($arr[$k]);
不能替换成unset($v)
,unset($v)
这只是把$v这个数字删除掉,但并没有把数组中这个值对应的键删掉。
封装
1 | function theLastOne($peopleCount,$remove){ |
关于分钱的问题
问题描述
将10000块钱分成5份,且每一份之间的相差的值$d不一样,并且相差$d得大于100。
代码及调用
1 | // 判断数组内是否有差值相等 |
思路说明
更新时间:2018-05-31 15:30