约瑟夫问题(一堆数据每隔几循环取出)

function question($arr) {
    global $outStr;
    global $b;
    foreach($arr as $key=>$val) {
        if(($key+1)% $b == 0) {
            unset($arr[$key]);
            array_push($outStr,$val);
            } else {
            unset($arr[$key]);
            array_push($arr,$val);
            }
        }
    return $arr;
}
//约瑟夫问题
$a = array(‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘,‘h‘,‘i‘,‘j‘,‘k‘,‘l‘,‘m‘,‘n‘,‘o‘,‘p‘,‘q‘,‘r‘,‘s‘,‘t‘,‘u‘,‘v‘,‘w‘,‘x‘,‘y‘,‘z‘);//传入的数据
$b = 3;//每隔几个取数据
$outStr=array();
while (count($a)>=3) {
    $a=question($a);
}
foreach($a as $key => $val) {
    array_push($outStr,$val);
}
var_dump($outStr);

时间: 2024-10-25 14:18:20

约瑟夫问题(一堆数据每隔几循环取出)的相关文章

java循环取出word table表格中所有的值

//往表格里面插入值或者打开表格填写 <%@ page language="java" import="java.util.*, java.awt.*" pageEncoding="gb2312"%> <%@page import="com.zhuozhengsoft.pageoffice.*, com.zhuozhengsoft.pageoffice.wordwriter.*"%> <%@ ta

Java中迭代列表中数据时几种循环写法的效率比较

Java中经常会用到迭代列表数据的情况,本文针对几种常用的写法进行效率比较.虽然网上已经有了类似的文章,但是对他们的结论并不认同. 常见的实现方法: 1.for循环: [java] view plaincopyprint? for(int i = 0; i < list.size(); i++) for(int i = 0, size = list.size(); i < size; i++) 一般人都会认为第二种写法效率高. 2.foreach: [java] view plaincopyp

排列数据的输出(二) 循环处理

排列组合是高中是学到的 知识,理论上很清楚,但如何使用代码实现,却一直没有尝试过,近段时间由于项目需要,写一个排列的算法,想不到却花费了不少时间. 在排列数据的输出一文中列举了几种输出的方法,但都是递归的方法,但又没有不用递归,只用循环的方法呢?于是自己就开始考虑了,都知道 要把4个元素的所有排列输出,必须递归4次,对应的是4层的循环,要把5个元素的所有组合输出,必须递归5次,对应的是5层的循环,一时间自己竟没有找到如何把递归改为循环的方法.于是自己就一最简单的方法,思考一个元素的排列,两个元素

高效遍历匹配Json数据与双层for循环遍历Json数据

工作中往往遇到这种情况,保留用户操作痕迹,比如用户选择过得东西,用户进入其它页面再返回来用户选择的的数据还在. 比如:1.购物车列表中勾选某些,点击任意一项,前往详情页,再返回购物车依旧需要呈现勾选状态           2.勾选人员后,前往别的页面,再次返回,人员依旧程勾选状态           3.等等.... 解决方法:1.把用户选择的数据在本地保存一份 2.进入当前页面拿缓存数据和新数据(从后台获取的数据)进行对比,然后进行对比渲染 在做数据比对的时候,可以通过嵌套for循环,一层f

实验二 Java基础(数据/表达式、判定/循环语句)

实验二 (一)实验内容 编写简单的计算器,完成加减乘除模运算. 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出. 编写测试代码,测试验证. (二)实验要求 掌握数据的定义和表达式求解的基础知识 掌握循环和判定语句的使用 掌握迭代器类的使用 掌握单元测试和TDD(不要求用IDEA的插件,用linux下VIM编写测试代码) (三)助教验收 简单计算机器的验收 测试验收 上传到码云 (四)实验报告 在规定时间前发表博客,标题"学号 实验二 &

listview刷新数据,滑到底部就会更新数据,解析本地数据,用for循环赋值

滑到低不就会有更新,不同于Xlistview,这个用法非常的简单: activity.xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_h

vue之菜单添加选择,知识:数据双向绑定、循环渲染、事件点击

要求: 1.可以增加菜名 2.可以删除菜名 3.点击选择菜名后自动增加到已选菜单中 4.可以在已选菜单中取消选择 代码: <template> <div> <input type="text" ref="add"> <button @click="addE()">增加菜名</button> <hr /> <h2>当前菜名</h2> <ul>

mongodb - 前端form表单传递数据,在保存和取出的数据格式处理函数 - 非递归

//处理时间部分,将ISODate("2014-10-09T18: 37: 50.0Z") 转换成 2014-10-09 18:37:50这种格式 //最多处理6层树形结构数据,当多维数组中的key,包含数组$product_date_col中的任意一个字符,那么就会被处理. public static function processMongoGetDate($product){ foreach($product as $k1=>$v1){ if(!is_array($v1)&

[python]mysql数据缓存到redis中 取出时候编码问题

描述: 一个web服务,原先的业务逻辑是把mysql查询的结果缓存在redis中一个小时,加快请求的响应. 现在有个问题就是根据请求的指定的编码返回对应编码的response. 首先是要修改响应的body的编码,由于mysql去出来就是unicode,所以直接使用 ``` content = content.encode(charset) ``` 来转化,然后在请求header中也加入字符编码. 解决: 可是这样测试下来,有的请求可以返回正确的编码格式,有的还是乱码,最后猜测是redis中数据类