感觉逻辑没有问题阿 为什么结果是14呢
#import <Foundation/Foundation.h>
int main()
{
/*
遍历15个人,从第一个人开始,经过1个人,m++,当m=3时候 menTu[i]=0,n=n-1,m=1,即排除
,之后并判断n==1:=1-输出 ,,当i=15的时候令i=1 ,
遍历之前要判断menTu[i]==1,若等于 i++,不等于 m++
*/
int n=15,i,m=0; //n是剩余人的数量 i是门徒编号 m是标记的1 2 3
int menTu[15]; //需初始化0 数组内存的0代表未排除嫌疑 1代表已排除
for (i=1; i<=15; i++) //遍历所有人
{
if (menTu[i]==1) //判断menTu[i]是否被排除
{
i++;
}
else
{
m++;
if (m==3) //判断m==3
{
menTu[i]=1;
n--;
m=1;
if (n==1) //判断当剩一个人时候输出叛徒 即n=1时输出叛徒
{
printf("输出叛徒%d",i);
}
}
}
if (i>=15) //每当门徒>=15是循环回到menTu[1];
{
i=1;
}
}
} |