一道小题

andy971024 2003-10-11 05:32:30
有N个人围成一个圈123(只数1.2.3)报数,数到3的退出,问最后能剩下哪个人?
...全文
47 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
andy971024 2003-10-12
  • 打赏
  • 举报
回复
不是考试。
不是问最后剩几个。而是剩第几个?求它的序号。
cafeeee 2003-10-12
  • 打赏
  • 举报
回复
是不是考试不会做到这来问的?
CycloneFox 2003-10-12
  • 打赏
  • 举报
回复
不是问最后剩几个吗?剩2个
nealzane 2003-10-12
  • 打赏
  • 举报
回复
int remain(int n) {
bool* out = new bool[n];
for (int i = 0; i < n; i ++)
out[i] = false;
for (int rest = n, which = n - 1; rest > 1; rest --) {
int count = 3;
while (count) {
which ++;
if (which >= n) which = 0;
if (!out[which]) count --;
}
out[which] = true;
}
delete[] out;
return which;
}
tianshan 2003-10-11
  • 打赏
  • 举报
回复
我在帮同学复习计算机等考三级时做过
此题,不难,你多想想。循环链表呀,队
列都可以。
我有一次用数组做的。

int k=0;
int a[30],b[30];
for(i=0;i<30;i++)
a[i]=0; //初始化,这就是原来的圈,其
//值i为排队顺序,0表示没有出圈
以30为模,当a[j]!=0时,k++;
if(k=2)a[j]=1;表示出了,将j值
顺序赋给b[g]以记录出圈顺序!

直到全部都出

Cyberweaver 2003-10-11
  • 打赏
  • 举报
回复
循环链表呀,队列都可以。
书上很多例的。
apogeecsj 2003-10-11
  • 打赏
  • 举报
回复
可用循环队列模拟

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧