报数退出【笔试编程题】

报数退出问题 问题: 有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。分析: 看到这道题的时候我不由自主的想到了约瑟夫环,想到了用链表去解决,但是,细想之下,时间仓促,因为是在答题,用链表的话有点小题大作,那么便有了下面数组的解决方法!首先,有N个人,创建一个大小为N的数组,但是如果N是从键盘接收的值,那么就得提前给定一个大小合适的值,这也 阅读详情

    昨天晚上笔试中的题。和大一学C语言遇到过的引约瑟夫问题(猴子选大王)一样的哈哈。以前用数组做的,现在用队列啦,在进步哦哈哈~

    题目要求:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到m报数),凡报到m的人退出圈子,问最后留下的是原来第几号的那位。

package daily;

import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Scanner;

public class Main {
	private static Scanner scanner = null;
	static {
		scanner = new Scanner(System.in);
	}

	public static void main(String[] args) {
		System.out.println("请输入一共有多少人:");
		int a = scanner.nextInt();
		Long atime = System.currentTimeMillis();
		System.out.println(new Main().getNum(a));
		Long btime = System.currentTimeMillis();
		Long ctime = btime - atime;
		System.out.println("使用的时间为:" + ctime + "毫秒.");
	}

	/**
	 * 题目要求:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的 人退出圈子,问最后留下的是原来第几号的那位。
	 * 
	 * @param n
	 * @return
	 */
	public String getNum(int n) {
		LinkedList<Map<String, Integer>> linkedList = new LinkedList<Map<String, Integer>>();
		
笔试编程题报数游戏 问题描述: n个人围成一圈,每个人有一个编号,编号从1开始到n.他们从1开始依次报数,每次报到为n的人自动退出圈圈,然后下一个人接着从1开始报数,直到圈子只剩下一个人,游戏结束。请问每次淘汰的人编号是多少?最后胜利者又是谁? 示例: 5 2 2 4 1 5 3 第一行两个数,n,m;n为参与游戏人数,m为退出者报的数。 第二行n个数,前n-1个数为每轮游戏依次淘汰者编号,最后一个数为... 阅读详情

相关推荐

深信服C++开发岗笔试记录

共有三部分:不定项选择(8道),填空(7道),编程(3道) 选择和填空的部分内容涉及较广,计算机知识和数学计算知识都有,不详细记录,要注意填空的概率问题较多 编程题共三道: 1.由N个容器分层叠放,编号从上到下为1到N,每个容器的容量为X,如果装水超过X则会溢出到下面的容器之中,最下一层则会溢出到容器之外。输入N,X,随后输入每层原有水的升数,以及灌注升数,按照从下层容器逐层向上的顺序。 所要输出...

weixin_42066588的博客 1015

猴子选大王(C语言)(简单易懂)

mooc高级语言程序设计第六讲:数组应用--编程题--拓展篇

chworie233的博客 1万+

直升机空气动力学基础--005翼型的升阻比和气动力矩

焦点与翼型有关,总升力矩可以视为附加升力与零升力迎角升力的合成,对于对称翼型,零升力力矩为0,附加升力就是总升力,其焦点就是其压力中心。对于对称翼型,零升力力矩为0,对于非对称翼型,零升力力矩存在,与不对称度成正比。对于不对称翼型,升力对焦点的力矩保持不变。

ygf666的博客 4094

约瑟夫环问题

约瑟夫环问题 static void Main(string[] args) { ///解题思路: ///1,N个猴子报数,报道M个猴子出圈 ///2,输出N个人的出圈次序 ///3...

weixin_30518397的博客 119

C语言笔试题(13)——报数退出

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位? 分析:可以构造一个数组进行操作,声明一个变量来计数,将报到3的置0, 然后最后将数组中不为0的元素输出即为剩下的; #include #include int main(int argc, const char *argv[]) { int i, n

技术随笔 2756

有n个人围成一圈,按顺序从1到n编号。从第一个人开始报数报数3的人退出圈子,下一个人从1开始重新报数报数3的人退出圈子。如此循环,直到留下最后一个人。问留下来的人的编号。

问题描述】有n个人围成一圈,按顺序从1到n编号。从第一个人开始报数报数3的人退出圈子,下一个人从1开始重新报数报数3的人退出圈子。如此循环,直到留下最后一个人。问留下来的人的编号。 【输入形式】输入人数n 【输出形式】输出依次退出的人的编号,和最后留下的人的编号 【样例输入输出】 #include <stdio.h> int main() { void number_off(int *p, int n); int num[100],*p=num,n,i; printf("Inpu

Leuchten的博客 6990

2020年字节跳动提前批笔试编程题(游戏专场,测试开发岗)

一共15道不定项选择+5道编程+2道问答 不定项选择以及问答基本都是测试相关的内容,比较恶心的是选择是不定项选择,多选不得分,少选得一半分,下面主要说一下五道编程题: 1、小球下落问题 一个小球从初始高度为H的地方下落,每次落地后反跳回原高度的一半;再落下,求它在第n次落地时,共经历多少米?结果保留两位小数:(n不超过五次) 输入测试用例:1 5 2 (第一个数代表测试用例个数,第二个...

土豪gold的博客 1万+

【练习】2020校招4399游戏开发岗笔试编程题 C++(4

题目地址:牛客网 第一题 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第n次落地时,共经过多少米?第n次反弹多高?(n<=10) 思路: 模拟。用两个值分别记录小球总路线长度和每次弹起来的高度。 代码: #include<iostream> #include<cstdio> using namespace std; int main() { int n; while(cin>>n) { doub

做题记录 3188

2020校招4399游戏开发岗笔试编程题(C#)

2020校招4399游戏开发岗笔试编程题(C#) 一、小球自由落体,一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第n次落地时,共经过多少米?第n次反弹多高? 二、有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 三、小陆每天要写一份工作日报,日报标题含有日期。几年后,他翻开以前的日报,想知道两份日报的日期是否同为星期几,请编程帮助他判断。 四、段誉身具凌波微波,动无常则,若危若安,一次能走一级台阶或者两级台阶

加载中....... 3411

【腾讯笔试题】记腾讯2019年暑假实习移动端开发在线笔试

腾讯2019年暑假实习移动端开发在线笔试题 事先说明,笔者是菜鸟,平时主要做硬件开发,很少研究算法,5题做出3题,但3题在分别在case50%和70%的时候被判断超时。以我这种水平估计凉了。。。 同时很想吐槽一下,官方推荐的答题浏览器是QQ浏览器和谷歌浏览器,结果QQ浏览器崩毁了2次,最后用的360浏览器没卡过一次。 规则 整个笔试一共5道编程题,每题20分,共100分。 编程题都可以使用本地...

weixin_41476562的博客 1821

2020校招4399游戏开发岗笔试编程题题解部分

2020校招4399游戏开发岗笔试编程题题解 序号四 题目描述: 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 输入描述: 一行,一个正整数n(1<=n<=1000000)。 输出描述: 输出答案 输入样例: 5 输出样例: 4 解题思路: 可以使用链表中的循环链表依次遍历进行模拟来求解,但是这样稍显笨重,所以这里是使用普通一维数组来完成,可以发现如果想完成循环效果,即下标始终在0到最后一位循环,即ind

Charon_x的博客 8983

有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下来的是原来第几号的那位?

这是公司笔试经常会遇到的题目 int flag[n]={0};    //n为最初围成一圈的人数 int i=0,j=0,k=0,end=0; while(end == 0) {  j=j%n;  if(flag[j++] == 0)  i++;  if((i%3)==0)   //判断是否报到3,若是,将对应的元素标记为1,象征退出  flag[j-1]=1;

jiangxiay的博客 618

笔试编程题(2012.3.22笔试)

一个笔试题目:n个人围成一个圈,第一个人从1开始递增报数,凡是报到3的倍数(包括3)时,该人退出,随后的人接着再继续报数,直到最后只剩下一个人为止,求最后剩下的这个人在原对中的编号。思路:用数组存储n个人,开始数组元素全部初始化为1,表示所有的人都在队中,然后循环遍历数组,凡是遇到能整除3的位置的元素就将该元素的值设为0; 同时记录队中1个数的count变量减一。重复上面的步骤,知...

Embedded engineer 276

面试题:有20个人围成一圈,顺序排号。从第一个人开始报数(从1到3报 数),凡报到3的人退出圈子

有20个人围成一圈,顺序排号。从第一个人开始报数(从1到3报 数),凡报到3的人退出圈子,最后一个是编号是多少? // first.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include int _tmain(int argc, _TCHAR* argv[]) { int i,k,m,n,num[50],*p; printf("in

大江的专栏 8568

从第一个人开始由1到m循环报数,报到m的人退出圈外,问最后留下的那个人原来的序号。[分析] 本题首先要定义一个数组,其元素个数为n。n定义为常变量,以便定义数组。数组元素的值标识该人是否出局:1

i的值修改为1,使得循环体完成后的判断是对string[1]进行,从而跳过对 string[0]中的串结束。母的ASCII码值在97~122之间,每一个英文字母的大写和小写的ASCII码相差32。符‘\0'的判断,导致在这种所谓“边界”的情况中,程序不能正确运行。[提示] 数组是线性排列的,而人是围成圈的,用数组表示要有一种从数组尾部跳到其头部。[分析] 要算出某天是当年的第几天,应该将当年中本月之前所有月的天数相加,再加上本。从第一个人开始由1到m循环报数,报到m的人退出圈外,问最后留下的那个人原来的。

Popcorn_zyh的博客 377

123报数,遇到3退出问题 C++实现

123报数问题 C++实现 题目: 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出 圈子,问最后留下的是原来第几号的那位。 代码: #include <bits/stdc++.h> using namespace std; int main(){ int N; cout << "请输入人数:"; cin >> N; int a[N] = {0}; // 将数组全部赋值为1,退出时为0 fo

钟DiuDiu的博客 2080

关于报数退出问题

要求:输入人数,然后输出号数。 观察:可以通过数组,当输入人数的时候,就定义一个长度相同的数组,在这个数组中,每个位数都已经有了编号。 因为每一位都要报数,则当一个位数的人报到下一位的时候还是他本人的话,则可以表示已经没人人了,可以再直接输出号数了。 循环则在这个数组中不断循环。当循环到第三位的时候,则将这个数组的索引记下来,并将其设为0,如果是没有读取过3的话,则索引...

So_Band的博客 553

算法分析—报数退圈问题

12个小朋友手拉手站成一个圆圈,从某一个小朋友开始报数报到7的那个小朋友退到圈外,然后他的下一位重新报“1”。这样继续下去,直到最后只剩下一个小朋友,求解这个小朋友原来站在什么位置上呢? #include &lt;stdio.h&gt; main() {     int n,i,k,p,x,m;     int a[100];     printf("输入游戏总人数:");    ...

da_ye_zi的博客 3238

从Excel到‘一张图’办案:手把手教你用AbutionGraph构建公安经侦知识图谱(含数据建模避坑指南)

本文详细介绍了如何利用AbutionGraph时序图数仓技术,将公安经侦领域的Excel、银行流水等碎片化数据转化为可交互的知识图谱。通过数据清洗、实体关系模型设计、时序数据处理等步骤,实现高效智能分析,提升办案效率。特别包含数据建模避坑指南和实战案例,助力公安金融案件侦破。

weixin_33702545的博客 304

虚谷数据库迁移工具windows版 64

虚谷数据库迁移工具windows版 64

上一篇: 集合与映射
下一篇: 优先队列学习总结
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值