程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 約瑟夫環成績(數組法)c說話完成

約瑟夫環成績(數組法)c說話完成

編輯:關於C++

約瑟夫環成績(數組法)c說話完成。本站提示廣大學習愛好者:(約瑟夫環成績(數組法)c說話完成)文章只能為提供參考,不一定能成為您想要的結果。以下是約瑟夫環成績(數組法)c說話完成正文


成績解釋
這個成績是以弗拉維奧·約瑟夫斯定名的,它是1世紀的一位猶太汗青學家。他在本身的日志中寫道,他和他的40個戰友被羅馬部隊包抄在洞中。他們評論辯論是他殺照樣被俘,終究決議他殺,並以抽簽的方法決議誰殺失落誰。約瑟夫斯和別的一小我是最初兩個留下的人。約瑟夫斯壓服了誰人人,他們將向羅馬部隊屈膝投降,不再他殺。約瑟夫斯把他的存活歸因於命運運限或天意,他不曉得是哪個機靈的約瑟夫!

    有N個編號為1~N的人圍成一圈,如今每隔兩小我(好比:1、4 之距離了2、3)就將一小我镌汰出去,問最初剩下的是編號為幾的人?

算法代碼以下

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int people_count = 0;
    int *peoples = NULL;
    printf("please input people number: ");
    scanf("%d", &people_count);
    if (people_count < 2){
        printf("can't do Joseph\n");
    }
    peoples = (int *)calloc(people_count, sizeof(int));
    int i;
    for(i = 0; i < people_count; i++){
        peoples[i] = i+1;
    }
    i = 0;
    int j = 0;
    int rest = people_count;
    while(rest){
        if (i >= people_count){
            i %= people_count;
        }
        if (peoples[i] == 0){
            i++;
            continue;
        }
        if (j++ % 3 ==0 && rest > 1){
            printf("kill people NO. %d\n", peoples[i]);
            peoples[i] = 0;
            rest--;
        }else if (rest==1){
            printf("NO. %d is alive\n", peoples[i]);
            rest--;
        }
        i++;
    }
    system("pause");
    return 0;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved