用c#写的约瑟夫问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 00:57:33
高分求助
完整的可执行程序

先普及一下知识,什么是约瑟夫问题?约瑟夫问题即设有n个人坐成一个圈,从某个人开始报数,数到m的人出列,接着从出列的下一个人开始从新报数,数到m的人在出列,如此循环,直到所有人出列为止。最后按出列顺序输出。
public int[] Jose(int total,int start,int alter)
{
int j,k=0;
int[] count=new int[total+1];
int[] s=new int[total+1];
for(int i=0;i<total;i++)
{
s[i]=i;
}
for(int i=total;i>=2;i--)
{
start=(start+alter-1)%i;
if(start==0)
start=i;
count[k]=s[start];
k++;
for(j=start+1;j<=i;j++)
s[j-1]=s[j];

}
count[k]=s[1];
return count;

}

我这有个比较简单的自己写的,也是按次序输出被排除的人的原编号,并列出最后剩的人的原编号,是C语言的,希望对你有用,转换下应该不是很难

#include<stdlib.h>
#include<stdio.h>
void main()
{
int i,count=0,out=0,n,*num,*p;
printf("请输入总人数:");
scanf("%d",&n);
if((num=