耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒

问题:
耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒

思路:
1.将每个人进行原始标号,从1~13号;

2.从第一位开始报号,当你报到3的时候,你的标号清除(我们用0代表);

3.每当一个人被标记为0,相应的总人数减1;

4.以此类推,当只剩下一个人的标号没有为0,则该标号为叛徒;

示例代码:

#include 

#define M 13    //M门徒的人数
#define N 3     //N循环的单元

int main()
{

        int man[M]={0},count=0,people=M;//count计数(1,2,3),people当前人数
        printf("原始的排名:\n");

//初始化排名
        for(int i=0;i>>>>>>>>开始排除>>>>>>>>\n");

        while(people>1)//只要人数大于1,则继续排除
        {
                for(int p=0;p


 

你可能感兴趣的:(耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒)