约瑟夫算法的C语言实现

来源:互联网 发布:淘宝柏润姿祛斑 编辑:程序博客网 时间:2024/05/16 02:29

m个人站成一圈,从某个人开始喊1,下一个开始喊2,以此类推,规定喊N的人被淘汰,被淘汰的下一个重新开始喊,请问最后谁留下?

#include <stdio.h>#include <stdlib.h>#include <string.h>int fun(int x, int N, int n){int *num, i = 0, k = 0, flag_1 = 0;if (x > n){exit(1);}num = (int *)calloc(n, sizeof(int));for (i = x - 1; i <= n; i++){if (i == n) i = 0;if (num[i] == 0){k++;if (flag_1 == n - 1) break;}if (k == N){num[i] = 1;k = 0;flag_1++;}}free(num);return (i + 1) % n;}int main(){int x;x = fun(1, 4, 5);printf("%d\n", x);retunr 0;}


0 0
原创粉丝点击