约瑟夫问题 算法很简单保证每隔人都能看懂用数组实现 利用循环删除数组中的元素

#include<iostream>
using namespace std;

const   int   size = 1000;
void ArrDel()
{
	int arr[size];
	//循环结束标志,一直循环到数组中只剩下最后一个元素结束
	int currentNum = size;
	int count = 0;
	for (int k = 0; k < size; k++)
	{
		arr[k] = k;
	}
	//currentNum==1表示数组中只剩下最后一个元素 是循环结束的标志
	for (int i = 0; currentNum != 1; i = (i + 1) % 1000)
	{
		if (arr[i] != -1)
		{
			if (count >= 0 && count < 2)
			{
				count++;
			}
			//else if(count%3==0)
			else if (count==2)
			{
				//当数组的值为-1是表示数组的元素被删除
				arr[i] = -1;
				currentNum--;
				//实现每次查三个删除第三个元素
				count = 0;
			}
		}
	}
	//遍历操作后的数组
	for (int i = 0; i < 1000; i++)
	{
		if (arr[i] != -1)
		{
			printf("%d", arr[i]);
		}
	}
}
void main()
{
	ArrDel();
	system("pause");
}

约瑟夫问题 算法很简单保证每隔人都能看懂用数组实现 利用循环删除数组中的元素,布布扣,bubuko.com

时间: 2024-08-26 04:28:28

约瑟夫问题 算法很简单保证每隔人都能看懂用数组实现 利用循环删除数组中的元素的相关文章

poj 1502 MPI Maelstrom Dijkstra算法的简单运用 ,呵呵,,我估计有很多人都没看懂什么意思,我也看了很久

MPI Maelstrom Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5831   Accepted: 3621 Description BIT has recently taken delivery of their new supercomputer, a 32 processor Apollo Odyssey distributed shared memory machine with a hierarchic

磁盘分区就是这么简单,电脑小白都能看懂的磁盘分区教程!

原文链接: https://xiaoheidiannao.com/articles/Disk-Partition.html 对于新安装的系统,可能只有C盘,如果软件安装和文件存放都在C盘进行的话就会很乱,找文件也比较麻烦. 作为电脑用户养成电脑使用的好习惯是很有必要的,对磁盘进行分区就是个好习惯.简单来说,磁盘分区就是将一个盘符拆分为多个盘符.而盘符一般都用字母表示且不能重复,例如我们经常说的C盘,还有D盘,E盘等等.当然还可以给这些盘符起个名字(卷标),例如C盘卷标为系统盘等等. 一般来说,推

LintCode Python 简单级题目 452.删除链表中的元素

原题描述: 删除链表中等于给定值val的所有节点. 您在真实的面试中是否遇到过这个题? Yes 样例 给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5. 标签 链表 题目分析: 删除链表中等于给定值val的所有节点. 遍历链表,找到其中next.val等于val的节点,删除. 注意的地方就是可能链表中的所有元素val都等于val,循环的开始需要从表头开始删除,需要新增一个头节点.

HDU - 5706 - Girlcat - 简单搜索 - 有新手都可以看懂的详解

原题链接: 大致题意:给你一个二维字符串,可以看成图:再给两个子串"girl"和"cat",求图中任意起点开始的不间断连接起来的字母构成的两个子串的分别的个数:连接的方向只有不间断的上下左右. 搜索函数: void dfsgirl(int i, int j,int k); //第一层(i1,j1,  k=0)时,k=0表示(i1,j1)上是g,然后枚举四个方位找到i--进入第二层//第二层(i2,j2,   k=1)时,k=1表示(i2,j2)位置上是字母i(并且该

其实Unix很简单

很多编程的朋友都在网上问我这样的几个问题,Unix怎么学?Unix怎么这么难?如何才能学好?并且让我给他们一些学好Unix的经验.在绝大多数时候,我发现问这些问题的朋友都有两个特点: 1)对Unix有畏难心理,对其没有信心: 2)喜欢用拿Windows来和Unix做比较.http://hovertree.com/menu/unix/ 这两种特点就像两个“心理暗示”,暗示着自己Unix很不好学,暗示着Unix很糟糕,不如Windows好.于是,自己也就被自己的这种长期的“暗示”所催眠了.因为,从一

管道函数(%&gt;%)很简单

%>%来自dplyr包的管道函数,其作用是将前一步的结果直接传参给下一步的函数,从而省略了中间的赋值步骤,可以大量减少内存中的对象,节省内存 %>%,该符号将左边的对象作为第一个参数传递到右边的函数中 直接上栗子??:library(data.table) library(tidyr) # 先虚构一数据框 set.seed(1) date <- as.Date('2016-11-01') + 0:14 hour <- sample(1:24, 15) min <- sampl

【转】 聚类算法-Kmeans算法的简单实现

1. 聚类与分类的区别: 首先要来了解的一个概念就是聚类,简单地说就是把相似的东西分到一组,同 Classification (分类)不同,对于一个 classifier ,通常需要你告诉它"这个东西被分为某某类"这样一些例子,理想情况下,一个 classifier 会从它得到的训练集中进行"学习",从而具备对未知数据进行分类的能力,这种提供训练数据的过程通常叫做 supervised learning (监督学习),而在聚类的时候,我们并不关心某一类是什么,我们需

机器学习&amp;数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)

http://www.cnblogs.com/tornadomeet/p/3395593.html 机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考虑该岗位,毕竟在机器智能没达到人类水平之前,机器学习可以作为一种重要手段,而随着科技的不断发展,相信这方面的人才需求也会越来越大.

1101: 零起点学算法08——简单的输入和计算(a+b)

1101: 零起点学算法08--简单的输入和计算(a+b) Time Limit: 1 Sec  Memory Limit: 128 MB   64bit IO Format: %lldSubmitted: 3669  Accepted: 1997[Submit][Status][Web Board] Description 前面7道题做下来,对输出和计算有点感觉了吧? 不过很可惜的是前面的做法,好像太死了,写了一个计算3+4的程序,计算5+6又得改程序,计算机真的只能这么实现,那么我们比计算机