急~!在线等,现解的

ryan_1223 2005-05-18 02:02:50
谁知道Josephus环。怎么实现????
(Josephus环)任给正整数N,K,按下述方法可得排列1,2,3……,N的一个置换:将数字1,2……N环形排列,按顺时针方向从1开始记数;记满K时输出该位置上的数字,(并从环中删除该数字),然后从下一个数字继续记数,直到环中所有的数字被输出为止。
例如:N=10,K=3时,输出的置换是,3,,6,9,2,7,1,8,5,10,4。
希望有代码~!
...全文
163 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dirtysalt 2005-05-18
  • 打赏
  • 举报
回复
这个问题还比较经典,但都被问烂了
强烈赞成
xiaozhishi 2005-05-18
  • 打赏
  • 举报
回复
#include<iostream.h>
void main ()
{
int a[100],i,j=0,o=0,k=0,c[100],h;

cout <<"您的数组有多少数字:";
cin >> h; //输入您想要的数锯该数
cout << "请你输入"<< h <<"个数据\n";

for( i=0;i<h;i++)
cin >> a[i];

cout << "先后跳出的数是:"<<endl;
i=-1;

while (1)
{
i++;
if (a[i]==0)
{
if (i==h)
i=0;
continue;
}

if (i==h)
i=0;
o++;

while (a[i]!=0)
{

if(j==2)
{
c[k]=a[i];
a[i]=0;j=0;o=0;
k++;
}
else
{
i++;j++;
if (i==h)
i=0;
}
}
if (o==h+2)
break;
}

for(i=0;i<h;i++)
cout << c[i] <<"\t";

}
qingyuan18 2005-05-18
  • 打赏
  • 举报
回复
这个问题还比较经典,但都被问烂了,用很多方法可以解的,被讨论得最多的是用链表做的。

我考计算机三级时遇到过这道题,当时是用数组做的,用ijk三个变量记录,i从1到N循环,j从1到k循环,i,j每次同时递增,当j==N时,k++,置a【i】=0表示该位置已空,k++,每次i,j递增时判断a【i】是否为0,一直到k==N-1即剩下最后一人,a【i】不为空的i值即为最后留下的人
c_nestor 2005-05-18
  • 打赏
  • 举报
回复
直接用stl的list最简单了
sirious 2005-05-18
  • 打赏
  • 举报
回复
一楼真强啊,如果以前没见到过。 5分中就给出答案了!
clrscr() 清屏,并把光标定位在左上角。
jingyueid 2005-05-18
  • 打赏
  • 举报
回复
这不是我当年华为面试的第一题吗?
下面是我当年的算法,不好意思,那是我第二次参加面试,有点紧张,代码如下:

#include <stdio.h>

#define N 10
#define K 3

bool gbflag[N];

int main()
{
int i, j;
int nOut = 0;
for( i = 0; i < N; i++ )
gbflag[i] = 1;

i = j = 0;
while( nOut != N )
{
if ( i == N )
i = 0;

if ( !gbflag[i] )
{
nOut++;
}
else
{
nOut = 0;
if ( ++j == K)
{
j = 0;
gbflag[i] = false;
printf("%d Out\n", i+1);
}
}
i++;
}

return 0;
}
ryan_1223 2005-05-18
  • 打赏
  • 举报
回复
clrscr();
这是什么意思???
llf_hust 2005-05-18
  • 打赏
  • 举报
回复
#include<stdio.h>
main()
{
int m ,n ,a[20], i,count,d;
clrscr();
printf("please input m &n:\n");
do
{
scanf("%d%d",&m,&n);
}while(n <= m);
for (i=0; i<n;i++)
a[i] = i+1;
count =0;
d = 0;
while(d<n)
for(i=0;i<n;i++)
if(a[i] != 0)
{
count++;
if(count == m)
{
printf(" %d",a[i]);
a[i] = 0;
d++;
count = 0;
}
}
}


69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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