【环球聚看点】约瑟夫问题ns流程图_约瑟夫问题

2023-05-30 14:42:09 来源: 互联网


(相关资料图)

1、约瑟夫问题是经典的算法题,大多教材上都有的,以下是我写的,供参考:#include #define N 30int yuesefu1(int data[], int sum, int k){    int i = 0, j = 0, count = 0;    while(count < sum - 1)    {        if(data[i] != 0) /*当前人在圈子里*/            j++;        if(j == k) /*若该人应该退出圈子*/        {            data[i] = 0; /*0表示不在圈子里*/            count++;/*退出的人数加1*/            j = 0; /*重新数数*/        }        i++;/*判断下一个人*/        if(i == sum) /*围成一圈*/            i = 0;    }    for(i = 0; i < sum; i++)        if(data[i] != 0)            return data[i];/*返回最后一个人的编号*/}int main(){    int data[N], total, k, i;    while(1)    {        scanf("%d%d", &total, &k);        if(total == 0 || k == 0)            break;        for(i = 0; i < total; i++)            data[i] = i + 1; //初始化        printf("%d", yuesefu1(data, total, k));    }    return 0;}。

本文到此分享完毕,希望对大家有所帮助。

标签:

Copyright   2015-2022 北方家电网版权所有   备案号:京ICP备2021034106号-50   联系邮箱: 55 16 53 8@qq.com