C语言关于实现约瑟夫环的问题

不用链表,怎么实现约瑟夫环呢?#include<stdio.h>#include<stdlib.h>voidfind_arr(int*,int,int);voidmain... 不用链表,怎么实现约瑟夫环呢?
#include <stdio.h>
#include <stdlib.h>

void find_arr ( int *, int, int );

void main ()
{
int arr[] = { 1, 2, 3, 4, 5, 6 };
int len = sizeof ( arr ) / sizeof ( arr[0]);
int step = 3;

find_arr ( arr, len, step );
}

void find_arr ( int *pint, int len, int step )
{
int count = 0;
int loc_step = step;
int loc_len = len;

while ( 1 )
{
while ( 0 == pint[ count % len ] )
count = ++count % len;
loc_step--;

if ( 0 == loc_step )
{
pint[ count % len ] = 0;
loc_len--;

if ( 1 == loc_len )
break;
loc_step = step;
}
count = ++count % len;
}

for ( count = 0; count < len; count ++)
if ( pint[ count ] != 0 )
printf ( "%d\n", pint[count]);
}
这个就是最终答案!!!
展开
 我来答
百度网友e33ba166
2011-09-17 · TA获得超过252个赞
知道小有建树答主
回答量:114
采纳率:0%
帮助的人:89.4万
展开全部
不用链表更容易啊,直接用数组加循环即可……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
黯然销魂马
2011-09-15 · 超过12用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:30.4万
展开全部
#include "stdio.h"
main()
{
int t=0,T=0,i,j,m,n,a[1000],p;
for (j=0;;j++)
{p=0;
scanf ("%d%d",&n,&m);
if (n==0||m==0)
break;
for (i=0;i<n;i++)
a[i]=1;

for (i=0;;i++)
{
if (i==n) i=0;
t=t+a[i];
if (t-m==0)
{a[i]=0;p++;t=0;if (p==n-1) break;}
}

for (i=0;;i++)
if (a[i]==1)
{printf ("%d\n",i+1);break;}

}

}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-09-14
展开全部
for循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式