自行车链条传动效率:约瑟夫问题怎么做

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 04:04:13

#include "alloc.h"
void main(void)
{
int Cont2,Ele,Number,Start,*Person,Spaker,Last,Cont;
do
{
printf("\n\nHow many element do you want: "); /*一共多少人*/
scanf("%d",&Ele);
printf("Which number cause Out:"); /*数到几则退出圆桌*/
scanf("%d",&Number);
printf("Which person to start:"); /*从第几个人开始数*/
scanf("%d",&Start);
}
/*当总数小于1,或者钥匙数小于1,或者开始数数的人编号比最大人数还大说明输入有误,需要重新输入*/
while(Ele<1||Number<1||Start<1||Start>Ele);

/*分配一段空间用于存储这些数如果申请空间失败则退出*/
if((Person =(int *)calloc((Ele+1),sizeof(int)))==NULL)
{
printf("\n\nOut of Memory!!!");
exit(0);
}

printf("The order is:" );
/* Set Person */
for(Cont = 1;Cont<=Ele;Cont++)
Person[Cont]=Cont+1;
Person[Ele]=1;
Spaker = Start;
/* Start say numbers */
for(Cont = 0;Cont<Ele;)
{
for(Cont2=1;Cont2<Number;Cont2++)
{
Last = Spaker;
Spaker = Person[Spaker];
}
Cont++;
printf(" %d",Person[Last]);
/* Person Out */
Person[Last] = Person[Spaker];
Spaker = Person[Spaker];
}
printf("\n\n \t\t\t\t\t\tAnykey to exit");
bioskey(0);
}