您的位置:首页 > 其它

简单的约瑟夫问题

2009-04-24 23:35 183 查看
n个人,报到3的退出,主要是注意几个条件!

#include"stdio.h"

void ThreeOut(int *p,int n){

int i=0,j=0,temp=0;

while(temp < n-1) //这里是n-1不是n
{
if(*(p+i) != 0)j++;

if(j == 3){
*(p+i) = 0;
j = 0;
temp++; //退出的人数
}
i++;
if( i == n )i = 0; //这里是n,不是n-1

}

for(i=0;i<n;i++){

printf("%d ",*(p+i)); //输入的1表示最后剩下的那个人
}
}

void main(){

int i,n,flag =1,a[100];

scanf("%d",&n);

for(i = 0;i< n;i++){
a[i] = flag;
}

ThreeOut(a,n); //报到3的出局
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: