📄 josephus.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 + -