猴子選大王(數組版)

問題及代碼:

問題描述: 一羣猴子,編號是1,2,3 …m,這羣猴子(m個)按照1-m的順序圍
坐一圈。從第1只開始數,每數到第n個,該猴子就要離開此圈,這樣依次下來,最後一隻出圈的猴子爲大王。輸入m和n,輸出猴子離開圈子的順序,從中也可以看出最後爲大王是幾號猴子。要求採用數組作爲存儲結構完成。  
輸入描述:猴子的個數與出隊的序號。 
程序輸出:出隊順序。 

#include <stdio.h>  
#define MaxSize 8  
void king(int m,int n)//m猴子的數量,n是出列的數。  
{  
    int mon[MaxSize];  
    int i=0,j=0,t=-1;  
    while(i<m)  
    {  
  
        mon[i]=1;  
        i++;  
    }  
    i=0;  
    while(i<m)  
    {  
  
        while(j<n)  
        {  
            t=(t+1)%m;  
            if(mon[t]==1)  
            j++;  
        }  
        mon[t]=0;  
        printf("%d ",t+1);  
        i++;  
        j=0;  
  
  
    }  
  
}  
  
int main()  
{  
    int m,n;  
    printf("請輸入猴子的個數及出列的序號。");  
    scanf("%d %d", &m, &n);  
    king(m,n);  
    return 0;  
}

運行結果:

這裏寫圖片描述


知識點總結:

約瑟夫問題的數組解法。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章