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


/*
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
解题思路:
    1、设数组a[n],初始化数组a;
    2、将数组a中的数循环赋值,赋值前需判断该位是否为0;
    如何找到应该剔除的数?若n为4,则前一位是应该剔除的数,将其置为0,n重置为1,在此时将标记数++。
    如何判断这是最后应该剔除的数?若标记数为N,则表明这是最后一次剔除,输出即可。
*/
#include<stdio.h>
#include<math.h>
#include<malloc.h>
#include<string.h>
#define N 8
main()
{
    int i,k,a[N],n;
    for(i=0;i<N;i++){
        a[i]=i+1;
    }
    i=0;
    n=1;
    k=0;
    while(n<=3){
        i=i%N;
        if(a[i]!=0){
            a[i]=n;
            n++;
        }
        i++;
        if(n==4){
            a[i-1]=0;
            k++;
            n=1;
        }
        if(k==N){
            printf("%d\n",i);
            break;
        }
    }
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



猜您在找 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 报数问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位 约瑟夫环问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 有10个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是第几号的人 python 实现:题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位 有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位 有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。 有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM