当前位置: 代码迷 >> C语言 >> 约瑟夫问题
  详细解决方案

约瑟夫问题

热度:194   发布时间:2006-03-20 23:03:00.0
约瑟夫问题

我真的不知道我到底哪里错了啊!请教一下啊!!!
#define max 8
main()
{
int i,k,m,n,a[max],*p;
printf("please input the totalof numbers:");
scanf("%d",&n)
p=a;
for(i=0;i<n;i++)
*p(p+i)=i+1;
k=0;i=0;m=0;
do (m<=n-1)
{
if(*(p+i)!=0) k++;
if(k==4)
{
*(p+i)=0;
k=0;
m++;}
while i++;
if(i==n) i=0;}
while(*p==n) p++;
printf("出列%d",*p);}

搜索更多相关的解决方案: 约瑟夫  

----------------解决方案--------------------------------------------------------

自己对照下,你的问题挺多
[CODE]
#include "stdio.h"
#include "conio.h"
#define max 100
void main()
{
int i,k,m,n,a[max],*p;

printf("please input the totalof numbers:");
scanf("%d",&n);
p=a;
for(i=0;i<n;i++)
p[i]=i+1;
k=0;
i=0;
m=0;
while (m<n-1) /*假如这里已经m=n-2了 那再执行一次就出局n-1个了,所以别取等号*/
{
if(*(p+i)!=0)
k++;
if(k==4)
{
*(p+i)=0;
k=0;
m++;
}
i++;
if(i==n)
i=0;
}
while(*p==0) p++;
printf("The %dth is left. \n",*p);
getch();
}
[/CODE]


----------------解决方案--------------------------------------------------------
  相关解决方案