我再给个~这个问题是很经典的,也是有名字的,称做josephus问题~
#include
#include
main()
{
int num=10; //假设有10个小孩
int interval; //报的数
int a[num],i;
char flag='y';
while(flag=='y')
{
for(i=0;i
{
a[i]=i+1;
printf("%d ",a[i]);
}
printf("\nplease enter the interval : ");
scanf("%d",&interval);
int k=1,j; //k表示第几个小孩,当k==num时,表示结束
i=-1;
while(1)
{
for(j=0;j
{
i=(i+1)%num;
if(a[i]!=0)
j++;
}
if(k==num) break;
printf("%d ",a[i]);
a[i]=0; //表示孩子已经离开
k++;
}
printf("\nthe last one is : %d" ,a[i]);
printf("\ncontinue? y/n\n\n");
flag=getch();
}
}
[此贴子已经被作者于2007-4-25 10:01:40编辑过]