C++中約瑟夫環(huán)的示例分析

這篇文章主要介紹了C++中約瑟夫環(huán)的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)公司成立與2013年,先為靜安等服務(wù)建站,靜安等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為靜安企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

約瑟夫環(huán)是一個數(shù)學(xué)的應(yīng)用問題:已知n個人(以編號1,2,3...n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報數(shù),數(shù)到m的那個人出列;他的下一個人又從1開始報數(shù),數(shù)到m的那個人又出列;依此規(guī)律重復(fù)下去,直到圓桌周圍的人全部出列。

分析:有n個人,要想所有的人都退出去,只有每個人喊到m,才可以退完,所以可以算出,n*m為所有人總共報數(shù)的總次數(shù)。

代碼:

/* 
 *   約瑟夫出圈 
 */ 
#include <stdio.h> 
 
int main() 
{ 
  char peo[100] ; 
  char *p_peo = peo; 
  int i , n , skip , flag[100] = {0} , cnt; 
  int *p_flag = NULL; 
  printf("請輸入人數(shù):"); 
  scanf("%d", &n); 
  printf("所有人如下:\n"); 
  for(p_peo , i = 0 ; p_peo < peo + n ; ++p_peo , ++i) 
  { 
    *p_peo = 'a' + i; 
    printf("%c ", *p_peo); 
  } 
  printf("\n"); 
 
  printf("請輸入報數(shù)值:"); 
  scanf("%d", &skip); 
 
  cnt = 0; 
  while(cnt <= n * skip) 
  { 
    for(p_peo = peo , p_flag = flag ; p_peo < peo + n ; ++p_peo , ++p_flag) 
    { 
      if(*p_flag) 
        continue; 
 
      cnt++; 
      if(!(cnt % skip)) 
      { 
        *p_flag = 1; 
        printf("%c ", *p_peo); 
      } 
    } 
  } 
  printf("\n"); 
  return 0; 
}

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“C++中約瑟夫環(huán)的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

當(dāng)前文章:C++中約瑟夫環(huán)的示例分析
文章鏈接:http://bm7419.com/article8/pcsiop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、搜索引擎優(yōu)化營銷型網(wǎng)站建設(shè)、小程序開發(fā)、做網(wǎng)站、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)