问题:有n个人围成一圈,从第一个人报数(从1报到3),凡报到3的人退出圈子,问最后留下的是原来的几号~~~??
以前会编的,现在忘了,有人向我请教 答不出来 郁闷~~~
解答:链表实现,
被选中的就DELETE,
剩下的就是结果了.
*N个人围成一圈,从1抱到M.*/
#include <stdio.h>
int main()
{
int N,M,*a;
int i,j,position=1,total=0,chage;/*total出队的人数*/
printf("Enter the N and M\n");
scanf("%d%d",&N,&M);
a=(int *)malloc(N*sizeof(int));
for (i=0;i<N;i++)
a[i]=i+1;
while(1)
{
position+=M-1;
while (position>N-total)
position=position-N+total;
chage=a[position-1];
for (j=position;j<N-total;j++)
a[j-1]=a[j];
a[N-total-1]=chage;
total++;
if (total==N)/*出队人数等于N,程序结束*/
{
for (i=0;i<N-1;i++)
printf("%d->",a[N-i-1]);
printf("%d\n",a[0]);
return 0;
}
}
}
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |