趣味算法-约瑟夫环

来源:互联网 发布:淘宝饰品店简介怎么写 编辑:程序博客网 时间:2024/05/17 05:09

约瑟夫环

方式 一: 数组取余数

数组取余数,若满足条件该元素值设为一,循环整个数组后,第二次循环时用一个变量保存遍历过切值不为一的数组元素的个数,作为判断条件。

#include <stdio.h>// using mode computeint calc(int n, int m, int nStart){    int i = 0, k = 0i;    int nCnt = 0;    int* pArr = NULL;    int pos = 0;    pArr = (int*)malloc(n*sizeof(int));    memset(pArr, 0, n*sizeof(int));    if (nStart > n)        return -1;    pos = -1;    while(nCnt < n-1)    {         for (;;)        {            pos = (pos+1)%n;            if (pArr[pos] == 0)                i++;            if (i == m)            {                i = 0;                break;            }        }        pArr[pos] = 1;        printf("%d \n", pos+1);        nCnt++;    }    for (i = 0; i < n; i++)    {        if (pArr[i] == 0)            nCnt = i;    }    return nCnt;}int main(){    int nResult = -1;    nResult = calc(41, 3, 0);    printf("Result: %d\n", nResult);    scanf("%d", nResult);    return 0;}


方式 二:循环链表方式

查找并删除满足条件的链表元素。



原创粉丝点击