返回信息流约瑟夫环 若干人围成一个环 从第一个开始数数到N的人自动退出 从下一个开始重新数 再次数到N后推出,以此类推,求最后一个推出的人
呃 回来之后看到有递推公式 f(n) = (f(n-1)+N)%TOTAL
但是当时是一个填空题目 想了半天 想不出来 撸主编程渣
求解释
int Joseph_intel(int N)
{
int a[TOTAL]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
int nextstart =0;
for (int i=1;i<TOTAL;i++)//循环total-1次 每一次排除一个结果
{
int counter =0;
//nextstart = (nextstart+N)%(i+1);
while (counter<N)
{
if (/*此处添加适当代码*/)
{
a[nextstart]=0;
}
do
{
//此处添加适当代码
} while (!a[nextstart]);
}
}
return nextstart+1;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #73200同步于 2013/8/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
问个面试中遇到的问题
woodwater
2013/8/13镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
#define TOTAL 10
int Joseph_intel(int N)
{
int a[TOTAL] = {1,1,1,1,1,1,1,1,1,1};
int nextstart = 0;
for (int i = 1; i < TOTAL; i++)
{
int counter = 0;
while (counter < N)
{
if (++counter == N) // 数到N了就把数组元素置零
{
a[nextstart]=0;
}
do
{
nextstart = (nextstart + 1) % TOTAL; // 跳过那些已经置零的元素
}
while (!a[nextstart]);
}
}
return nextstart + 1;
}
另外顺路吐槽下:函数命名中的Intel是啥意思?莫非英特尔也开始出这种渣渣题了~
【 在 woodwater 的大作中提到: 】
: 约瑟夫环 若干人围成一个环 从第一个开始数数到N的人自动退出 从下一个开始重新数 再次数到N后推出,以此类推,求最后一个推出的人
: 呃 回来之后看到有递推公式 f(n) = (f(n-1)+N)%TOTAL
: 但是当时是一个填空题目 想了半天 想不出来 撸主编程渣
: ...................
3x
呃 还是太弱了..
【 在 tonyjansan (FOR THOSE WHO DO.) 的大作中提到: 】
: [code=c]
: #define TOTAL 10
: int Joseph_intel(int N)
: ...................