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]);
}
这个就是最终答案!!! 展开
#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]);
}
这个就是最终答案!!! 展开
3个回答
展开全部
不用链表更容易啊,直接用数组加循环即可……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;}
}
}
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循环
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询