Josephus問題的一個C語言程式

來源:互聯網
上載者:User
Josephus問題的一個C語言程式 問題描述:

n個人圍坐一圈,從第一個人開始報數“1,2,3,4….m,數到m的人出局,然後下一個人從1開始繼續,這樣直到最後一個人為勝利者,輸出勝利者是第幾個人。 函數功能:

功能:josep函數,輸入成員數n和停止數m,返回最後留下的人的編號。 代碼:

以下代碼在VS2012平台建立:

#include<stdio.h>#include<stdlib.h>int josep( int , int );int delay();int main(){    int flag=1;    while(flag)    {        int number,point,winner;        printf( "************************welcome*************************\n**  遊戲規則:任意幾個人圍坐一圈,從第一個人開始報數  **\n**  “1,2,3,4....,數到規定的數位人出局,然後下    **\n**  一個人從1開始繼續,這樣直到最後一個人為勝利者。   **\n********************************************************\n\n請輸入玩家人數(整數):" );        scanf( "%d", & number );        printf( "\n請輸入報數最大值(整數):" );        scanf( "%d", & point );        winner=josep(number,point);        printf( "\n\n玩家%d是最終勝利者。\n\n",winner );        flag=3;        while (3==flag)//判斷是否重新輸入數字        {            printf( "\n\n是否重新輸入數字(1為是,2為否)。\n請輸入:" );            scanf( "%d", & flag );            if (1==flag)                flag=1;            else if (2==flag)                flag=0;            else             {                flag=3;                printf( "\n輸入數字錯誤。\n" );            }        }    }    return 0;}int josep( int n , int m ){    int i,j,winner;    int *num = ( int * )malloc( n * sizeof(int) );//建立玩家數組    if ( num == NULL )    printf( "記憶體配置錯誤,請重啟程式" );    for ( i=0 ; i<n ; i++)//初始化玩家數組,分別編號。    {        num[i]=i+1;     }    printf( "\n玩家編號完成");    i=0;    while ( n > 1 )    {        i=( i + m - 1 ) % n;//核心演算法,計算出局人。        printf( "\n玩家%d被淘汰出局",num[i] );        delay();        for ( j=i+1;j<n;j++)//移動座位            num[j-1]=num[j];        n--;//人數減一        if (i==n)            i=0;    }    winner=num[0];    free (num);    return winner;  }/**延時函數**/int delay(){    int i,j;    for (i=0;i<5000;i++)        for(j=0;j<5000;j++);    return 0;}
控制台介面如下

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.