国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

約瑟夫環問題(數組法)c語言實現

2020-01-26 15:39:15
字體:
來源:轉載
供稿:網友

問題說明
這個問題是以弗拉維奧?約瑟夫斯命名的,它是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;
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 北海市| 会泽县| 利辛县| 布拖县| 临江市| 南丹县| 盱眙县| 宜州市| 安化县| 思茅市| 九寨沟县| 松潘县| 靖西县| 当阳市| 黄骅市| 天峻县| 田阳县| 彰化市| 高唐县| 伊宁县| 利川市| 岫岩| 玛多县| 泗水县| 泰安市| 酒泉市| 拉萨市| 余江县| 交城县| 名山县| 丰宁| 项城市| 页游| 沐川县| 神木县| 望江县| 弥勒县| 西华县| 上虞市| 余江县| 嘉义市|