有一百个人按编号排成一队,从1开始按123123报数,报3者退出,直到队尾,又从队尾向队首报数(1开始),依旧报3的退出,重复执行直至队列剩2个,求此2人的原始编号,这是题目,下面是我的程序。。。。求解。。
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int people[100],i,j1,j2,t=0;
for(i=0;i<100;i++){
people[i]=1;
}
while(t<98){
j1=0;
if(j1<100){
for(i=1;i<=(100-t);i++){
if(people[j1]!=0){
people[j1]=i;
if(people[j1]%3==0){
people[j1]=0;t++;
}
j1++;
}
else{
i--;j1++;
}
}
}
j2=99;
if(j2>=0){
for(i=1;i<=(100-t);i++){
if(people[j2]!=0){
people[j2]=i;
if(people[j2]%3==0){
people[j2]=0;t++;
}
j2--;
}
else{
i--;j2--;
}
}
}
}
for(i=0;i<100;i++){
if(people[i]!=0){
printf("%d\n",i+1);
}
}
return 0;
}
猫的脚步声
DoDream
相关分类