有88个人围成一圈报数,报到3的倍数就退出,问最后留下人的位置? 5C

求大神求解。。。。。。有88个人围成一圈报数,报到3的倍数就退出,问最后留下人的位置?-java

1

3个回答

这个叫做约瑟夫环问题,题目都是类似的,只是人数、倍数换一换。
https://www.cnblogs.com/liangstudyhome/p/4582756.html
https://www.cnblogs.com/timeng/p/3335162.html

3
qq_34328582
搬代码的科比 我采用这种方式 可是最后一组数是不会去遍历的。结果接找不到。
一年多之前 回复

应该是59,用88除3再用88减去所得的商

0

数据范围这么小,打个暴力即可知道是59.或者用数学的方法做也行。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
一群人围成一圈报数,3倍数的就退出,面试题
这个题目指的是一群人,围成一个圈,然后一个接一个的报数,当数到3或者3的倍数时候就退出,知道最后一个人。 距离当人数为30的时候: public class CycleTest {          public static void main(String[] args) {           // TODO Auto-generated method stub
50个人围成一圈报数,遇到3的倍数,自动退出,最后剩下的人原来的位置是多少
/** * 50个人围成一圈报数,遇到3的倍数,自动退出,最后剩下的人原来的位置是多少 */ import java.util.ArrayList; public class TestNum3 { public static void main(String[] args) { System.out.println(cycle(50, 3)); } public static
约瑟夫环问题-所有人围成一圈,数到3的人退出,最后留下人的位置?
第一种方法 public class Count3Quit{ public static void main(String []args){ //定义一个数组用来当做500个人.并且初始化为true表示都在圈内 boolean arr[] =new boolean[500]; for(int i=0; i<arr.length; i++){ arr[i]=true; ...
约瑟夫问题:有n个人围成一圈,顺序报数(1~3),报到3退出
【描述】 有n个人围成一圈,顺序排号,从第一个人开始报数(从1~3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号。 【C语言】 #include int main() { int num[50]; int *p; int i, k, m, n; scanf("%d", &n); p = num; for (i = 0; i < n; i++) *(p + i
n个人围成一圈报数,从1开始,凡是报到3的退出,最后留下的是几号?
题目:n个人围成一圈报数,从1开始,凡是报到3的推出,最后留下的是几号? 普通代码: public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入总人数:"); int p = input.nextInt(); //初始化人数组 ...
17个人围成一圈,从第一个人开始报数,报到3的退出
using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication4{    class Program    {        static void Main(string[] args)        {           PersonList psl= new P
有15个人围成一圈,顺序排号。从第一个人开始报数(从1~3报数),凡报到3的人退出圈子,问最后留下的人 C#版
今天下午,某一同学,问我一面试题,第一做法就是度娘了半天,发现都是c c++ 的   。遂参考逻辑、整理完一C# 版本的,留个小纪念 namespace ConsoleApplication1 { class Program { static void Main(string[] args) { bool[] b
N个人围成一圈报数,报到某一个数的就出局,问你最后剩下来的人的号码?
记得在哪本书上看过这个程序的算法,但怎么都想不起来了,哪位大虾能帮忙给出正确的程序?谢谢!
N个人围成一圈报数,报到某一个数m的就出局,问你最后剩下来的人的号码?
<br />算法如下: <br /> //函数接收n和m,返回最后出圈的是第几个人 <br /> /*e.g.       yuesefu(5,2)=3 <br />                   yuesefu(2,100)=1*/ <br /> int   yuesefu(int   n,int   m) <br /> { <br />         int   i,r=0; <br />         for   (i=2;i
n个人围成一圈报数,报到某一个数的就出局,问你最后剩下来的人的号码?
有n个人围成一圈,顺序编号。从第一个人开始报数,凡报到m的人退出圈子,问最后剩下的人是多少号 ?在网上找了 几个典型的答案 但是没看懂是什么意思 哪位能帮忙解释解释啊 谢谢了。rn public static int removeNM(int n, int m) rn LinkedList ll = new LinkedList(); rn for(int i = 0; i < n; i++) rn ll.add(new Integer(i+1)); rn [color=#FF0000]int removed = -1; [/color] rn while(ll.size() > 1) rn [color=#FF0000]removed = (removed + m) % ll.size();[/color] rn ll.remove(removed--); rn rn return ((Integer)ll.get(0)).intValue(); rn rn public static void main(String[] args) rn System.out.println(removeNM(3,2)); rn rn
n个人围成一圈报数问题
题目(摘自谭浩强的C语言):有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那个人。 实现代码: #include int find(int *a,int n) { int i=0,j,k,x=n-1; while(x) { for(j=1; j<=3;) {
n个人围成一圈报数出列
题目:n个人围成一圈,并依次编号为1,2,3,……,n,并以m数顺序报数,报到m时,该人出列,然后从出列的下一位开始重新报数,以此类推,编写代码依次输出出列人编号的顺序以及最后留在圈内的人的编号。 思路:可以使用结构体来为每个人编号和确认下一位的编号,采用循环依次数数,每次数数判断下一位是否已经出列,是则选择跳过。数到m时,输出当前人的编号,同时将该人编号清零,作为已经出列的标志。最后输
N个人围成一圈报数淘汰问题
C语言——N个人围成一圈报数淘汰问题 有13个人围成一圈(编号为1~13),从第 1个人开始从 1报数, 凡报到 5的倍数的人离开圈子,然后再数下去,直到最后只剩下一个人为止。 问此人原来的位置是多少号? #include &lt;stdio.h&gt; #define N 13 struct mystruct { int num; int flag; }; typedef struct m...
n个人围成一圈,顺序排号,从第1个人开始报数(1到3报数),凡报到3的人退出圈子,问最后留下的是原来几号
n个人围成一圈,顺序排号,从第1个人开始报数(1到3报数),凡报到3的人退出圈子,问最后留下的是原来几号
n个人围成一圈,从第一个人开始123报数,报到3的离开,问最后剩下的人是第几个?
package com.xhly; import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * 一排人 123 三 退出 最后 剩下 谁 * @author 新火燎塬 * @date 2016年6月13日 * @time 上午9:14:38 * */ public class S
n个人围成一圈,第一个开始报数(1-3),凡报数3退出。问最后留下的人是原来第几号?
#include int main() {    int i=0,j=0,k=0,n,x;    int a[100];    printf("please input a nu :");    scanf("%d",&n);    for (x=0 ; x    {       a[x] = x+1;    }    while (n-k > 1)    {    
报到3的倍数的人退出
题目:rn17个人围成圈,编号为1~17,从第1号开始报数,报到3的倍数的人离开,一直数下去,直到最后只剩下1人。求此人的编号。rn我的程序:(先试5个人的,正确结果应是:00040,我却得到:02040)rn#include rnvoid output(int a[],int n)rnrn rn int i;rn for(i=0;i1)rn rn for(i=0;i
多人围成一圈报数问题!
题目(摘自谭浩强的C语言):有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那个人。     解法思路:首先不要将思维局限在一圈人,可以先将n个人看做一排,即作为一个数组,为这个数组的每一个元素(即人)编号,第0个人就编号1,以此类推。有了编号之后可以这样:让第一个人开始报数,到第三个人喊3的时候,将其编号重置为0,并且将喊的那
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),
public static void main(String[] args) { Scanner scan=new Scanner(System.in); System.out.print("请输入人数:"); int N=scan.nextInt(); int[] sum=new int[N]; int num=N;//剩余的人数 int count=0; for(
多人围成一圈报数问题
题目出自谭浩强C语言程序设计第四版 题目是有n个人围成一圈报数,顺序排号,从第一个人开始报数(从1到3),如果报道三则退出,问最后留下来的是原来第几号的那位 思路:首先为n个数设置一个编号,目的是最后结果知道是开始的几号,然后如果要解决围成圈报数的问题,最好的办法就是建立一个变量,使该变量递增,在某些条件下,对该变量进行重置,在while条件下保证他的连续性,这样就可以保证在第一遍循环
有n个人围成一圈,顺序排号。从第一个人开始报数(1到3),凡报到3的人退出,问最后留下来的是几
include   #define N    50 // 排队人数(可任意更改)   #define CAL   3 //凡报3的人出列(可任意更改)   //下面是排队编号函数:从h 开始的n个人依次编号1到n   void   stdline(int *h,int n)   {   int i;   for(i=1;i   }   /*下面函数表示从
n人围成一圈报数
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位 思路:用一个数组存这n个人,里面的初始状态全设为1,表示都还在圈子里面。 然后用q来记录报的号,因为每次报号报到3的人就得退出圈子,用j来表示圈子内剩余的人数。 每当有人报到3时,j-1,同时将数组中该元素的值标记为0,q清0。 这样while循环结
有N个人围成一圈,顺序排列.从第一个人开始报数(从1—>3),凡报到3的退出圈子。问最后留下的是原来第几号的那位?
#include stdio.h>#define N 20main(){    int person[N],people,count,flag,n,m;    printf("How many people?:");    scanf("%d",&people);    for(n=0;npeople;n++)    person[n]=n+1;    count=0;    flag=0; 
有n个人围成一圈,顺序排号,从第一个人开始报数(1-3报数),凡是报数为3的人退出圈子,问最后留下的人原来的编号是多少?
有n个人围成一圈,顺序排号,从第一个人开始报数(1-3报数),凡是报数为3的人退出圈子,问最后留下的人原来的编号是多少? n=int(input(“请输入总人数(从一个报数开始以1编号,逐次递增):”)) a=list(range(1,n+1)) while len(a)&amp;amp;amp;amp;gt;2: c = len(a) % 3 b = [] if c == 0: for i in range(1, len(a...
一群人围成一圈从123报数,如果报到3就退出该圈中,直到最后一个人留下来!
<br />#include<stdio.h><br />int main()<br />{<br />  int m,n,i,k,*p,num[50];<br />  printf("please input join people:");<br />  scanf("%d",&n);<br />  p=num;<br />  m=0;<br />  k=0;<br />  for(i=0;i<n;i++)<br />  {<br />   *(p+i)=i+1;//对所有的人进行编号!<br />  }
50个人围成一圈
出圈算法是一类比较典型的算法面试题,它可以很好地考察求职者的编程功底。由于它是一种循环的逻辑,因此它比起一般的基础算法题会更难一些。本例在回答该问题的同时,详细地讲解出圈算法的实现思路。 对于出圈的问题,它有一个比较大的困难点,就是它总是重复循环的,它的头就是它的尾巴,所以,出圈问题的循环语句是比较难写的。 该题目的圈的元素个数是50个,每次数到3或3的倍数的时候,就把当前元素出圈,并
n个人围成一圈报数,从1报到3,报到3的人退出,然后依次循环,直到剩下最后一人,这人是第几个人?
n个人围成一圈报数,从1报到3,报到3的人退出,然后依次循环,直到剩下最后一人,这人是第几个人?
【转】 小算法:n个人围成一圈,从第一个人开始报数,报到3的倍数的退出,一直到剩下最后一个人
小算法:n个人围成一圈,从第一个人开始报数,报到3的倍数的退出,一直到剩下最后一个人 http://www.cnblogs.com/notwin/archive/2009/09/16/1567631.html  1 DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 2 HTML> 3  HEAD> 4   TI
有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,最后是谁
#include&amp;lt;stdio.h&amp;gt; int main() { int n; scanf(&quot;%d&quot;,&amp;amp;n); int a[n]; int i,j,h,f=0; for(i=0;i&amp;lt;n;i++) { a[i]=i+1; } j=0; for(i=0;
有n个人围成一圈,顺序排号。从第一个人开始报数,凡报到3的人退出圈子,问最后留下的是几号?
我的问题是:我弄不明白while循环的条件为什么是圈外人数rn#define max 15rnint main()rnrn int i,k,n,m,num[max],*p;rn printf("输入开始报数时总人数:");rn scanf("%d",&n);//开始报数前的人数。rn p=num;//指针指向数组第一位num[0]rn for(i=0;i
C++,n个人围成一圈,从第一个人开始报数……
1、2、3 凡报到3的退出圈子,问最后剩下的人在原来是第几号?
文章标题n个人围成一圈,顺序排号。从第一个人开始报数(1~3),凡报到3的人退出圈子,问最后留下来的是原来几号的那位?
第一封技术博客,从小白开始,一同成长!审题:围成一圈报数,固当第一次报到3的时候,就应该退出这个圈子,不在进行下面的报数,对计算机而言,就是跳过这个“喊出3的人” 接着从“1,2”开始。怎么跳过呢?给这个是“3”的人标记,让计算机知道有了这个标记之后,下面的人要从“1”开始喊起,直到又遇见了“3”,固应该添加一个循环。随着“3”的不断被标记,没有被标记的越来越少,那没被标记的“3”剩下多少算合适呢?
有n个人围成一圈,顺序排号,从第一个开始报数(从1到3),报到3的退出,问最后留下的是几号
#include   #define n 90 int main()     {    int a[100],i,quit_num,k;  for(i=0;i a[i]=i+1;  quit_num=0;      //初始化退出人数 i=0;  k=0;  while(quit_num { if(a[i]!=0)k++;  if(k==3)       //当报
五十道编程小题目 --- 37 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子 java
【程序37】  题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下 的是原来第几号的那位。  import java.util.Arrays; import java.util.Scanner; import net.mindview.util.Print; public class Test37 { publi
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出
-
有100个人围成一个圈,从1开始报数,报到14的这个人就要退出
有100个人围成一个圈,从1开始报数,报到14的这个人就要退出,上传的资源位源码,运行测试没问题后上传
n个人围成一圈,凡报到3的倍数的人离开圈子,然后再数下去
n个人围成一圈(编号为1-n),从第1号的人开始从1报数,凡报到3的倍数的人离开圈子,然后再数下去,直到最后只剩一个人为止。问当n=17时,剩下的人是多少号 方法简介:将圈内人数看做一个List,去掉(index+1)是3的倍数的人,生成一个新的List 结构列子:比如List:1,2,3,4,5,6,7,8,9,10。 第一次生成的新List为:10、1、2、4、5、7、8 (3,6,9去
有N个人围成一圈,第一个人从1开始报数,报到M的人出列,求最后一个出列的人
在浏览面试题的时候发现了这道题目,百度后整理了一下思绪,觉得网上写的有点繁琐,将自己写的整理如下: package com.dewen.project; /** * 有N个人围成一圈,第一个人从1开始报数,报到M的人出列,求最后一个出列的人 * @author Dewen.Liu * */ public class Play { public void playGame(int
有N个人围成一圈,第一个人从1开始报数,报到M的人出列,求最后一个出列的人。
这是一个约瑟夫环问题,下面给出了java实现的例子: Java代码  package com.juziku;    import java.util.Arrays;      /** * n个人围成一圈,报到m的人出列 * @author sunligh
n(5)个人围成一圈,每报数第三的人退出,最后剩下谁?
#include&amp;lt;stdio.h&amp;gt; int main() { int a[5]={0,1,2,3,4}; //5 members int j=1,i=1; int n=5,c=0; while(n&amp;gt;1) { for(i=0;i&amp;lt;5;i++) //重复查询是否计数 { if(a[i]==-1) { continue; ...
相关热词 c# 线程顺序 c#昨天当前时间 c# 多进程 锁 c#mysql图片存取 c# ocx 委托事件 c# 读取类的属性和值 c# out 使用限制 c#获取url的id c#怎么进行分页查询 c# update 集合