满意答案
M丶G少爷
推荐于 2016.12.01
采纳率:50% 等级:8
已帮助:210人
你这个数据规模是不要求算法的,仅要求简单模拟。
下面的代码时间复杂族姿模度为O(pn):
int s[501];
int i;
int n,m,p;
int KidP;
int count=1;
void Move(int a); /兆缓/移除第册念a个小朋友,并将后面剩下的小朋友顺序前移一位。
void TakeOut(int a); //将第count个小朋友移除队列,a=1代表从前面数,a=0代表从后面数。
int main()
{
scanf("%d%d%d",n,m,p);
for( i=1;i<=n;i++) s[i]=i;
while(count<=n-m+1)
{
TakeOut(count%2);
}
for( i=1;i<=n-m+1;i++) printf("%d ",s[i]);
printf("%d\n",KidP);
return 0;
}
void Move(int a)
{
int i;
for(i=a;i<=n-count;i++) s[i]=s[i+1];
return;
}
void TakeOut(int a)
{
if(a==0)
{
if(count==p) KidP=s[count];
Move(count);
count++;
return;
}
else
{
if(n-count+1==p) KidP=s[n-count+1];
Move(n-count+1);
count++;
return;
}
}
10分享举报