⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 josephus.c

📁 已知n个人(以编号1
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
/*josephus问题的算法
问题:有n个人坐在周旁围成一周,从第s个人开始报数,第m人出列,然后从下一个人重新开始报数,数到第m人又出列
如此反复,直到所有人全部出列位置。n,s,m给定,求出按出列次序得到的n个人员的序列*/
struct List
{
    DataType element[max];
    int n;
};
typedef struct List *Plist;
int deletelist(Plist palist, int p)
{
    int q;
    if (p<0||p>palist-> -1)
    {
        print("Not exist!\n");
        return 0;
    }
    for (q=p; q<palist->n -1;q++)palist->element[q]=palist->element[q+1];
    palist->n =palist->n -1;
    return 1;
}
void josephus(Plist palist, int s, int m)
{
    int s1, i;
    DataType w;
    s1 = s-1;
    for (i=palisht->n;i>0;i--)
    {
        s1=(s1+m-1)%i;
        w= retreve(palist,s1);//求出下标为s1的元素的值,此函数需要自己写出来!!!!!
        printf("Out person%d\n",w);
        deletelist(palist,s1);
    }
}

int main()
{
    printf("Hello world!\n");
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -