有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的人退出圈子,問最后留下的是原來第幾號的那位 有10個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是第幾號的人 【JAVA習題二十七】有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下 有17個人圍成一圈(編號為0~16),從第 0號的人開始從 1報數, 凡報到 3的倍數的人離開圈子,然后再數下去,直到最后只剩下一個人為止。 問此人原來的位置是多少號? java解答:有17個人圍成一圈(編號0~16),從第0號的人開始從1報數,凡報到3的倍數的人離開圈子,然后再數下去,直到最后只剩下一個人為止,問此人原來的位置是多少號? C語言——N個人圍成一圈報數淘汰問題 有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后問第一個人,他說是10歲。請問第五個人多大? 一個n位的數,去掉其中的k位,問怎樣去使得留下來的(n-k)位數按原來的前后順序組成的數最小 Leetcode練習(Python):動態規划類:第213題:打家劫舍 II:你是一個專業的小偷,計划偷竊沿街的房屋,每間房內都藏有一定的現金。這個地方所有的房屋都圍成一圈,這意味着第一個房屋和最后一個房屋是緊挨着的。同時,相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM