選班長

也就是簡單的約瑟夫還問題  n個人圍成一圈 開始報數 報到3 的離開 再從1開始報數 直到剩餘一個人 並把他的序號輸出

#include<stdio.h>
int main()
{
    int n,a[100000],b=0,i,c=0;
    scanf("%d",&n);
    for (i=0;i<n;i++)//活着的爲1,死了的爲0
    {
        a[i]=1;
    }
    for (i=0;;)
    {
        if(a[i]==1)
        {
            b++;
        }
        if (b%3==0&&a[i]!=0)
        {
            a[i]=0;
            c++;//統計已死亡的人數
        }//數到三死亡變爲0
        if(c==n-1) break;//剩最後一個人的時候結束循環
        i=(i+1)%n;//讓數組在0-n中循環
    }
    for(i=0;i<n;i++)
    {
        if(a[i]==1)
        {
            printf("%d",i+1);
        }
    }
}


發佈了40 篇原創文章 · 獲贊 128 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章