国产探花免费观看_亚洲丰满少妇自慰呻吟_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;
}

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

圖片精選

主站蜘蛛池模板: 墨玉县| 南木林县| 监利县| 梁河县| 八宿县| 宕昌县| 晋城| 平果县| 泰来县| 绥江县| 得荣县| 长沙县| 遵义县| 康保县| 松滋市| 张掖市| 青海省| 紫阳县| 杭锦旗| 纳雍县| 镇坪县| 岱山县| 孝昌县| 南陵县| 科技| 彭泽县| 海淀区| 射洪县| 吴川市| 唐山市| 佛教| 九龙县| 通渭县| 永登县| 昌图县| 宁阳县| 锡林郭勒盟| 崇文区| 卢氏县| 太原市| 南丰县|