耶稣有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 <stdio.h>#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<M;i++){man[i]=i+1;printf("%d ",man[i]);}//进行排除printf("\n>>>>>>>>>开始排除>>>>>>>>\n");while(people>1)//只要人数大于1,则继续排除{for(int p=0;p<M;p++){//循环排除if(man[p]!=0){count++;}//如果当前位置不为零,则count+1if(count==N){printf("\n第%d被排除\n",man[p]);//把当前位置排除printf("排除后的排名为:\n");man[p]=0;//该位置清零for(int i=0;i<M;i++){printf("%d ",man[i]);}//将本次排除打印出来printf("\n");count=0;//从新计数people--;//人数减1}}}
//将叛徒的排名打印出来for(int i=0;i<M;i++){if(man[i]!=0){printf("\n第%d是叛徒\n",man[i]);}//遍历排名,不为0的即是叛徒}
}
耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒相关推荐
- C语言必会面试题(3、耶稣有13个门徒,当中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个開始报号:1,2,3,1,2,3...。凡是报到“3”就退出圈子,...)...
3.耶稣有13个门徒.当中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个開始报号:1.2,3.1,2,3.... 凡是报到"3"就退出圈子.最后留在圈子 ...
- 3 耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3...。凡是报到“3”就退出圈子,最后留在圈子内的人就是出卖耶稣的
// 3 耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3....凡是报到"3"就退出圈子,最后留在 ...
- 13个人围成一圈,从第1个人开始顺序报号1,2,3。 凡报到3者退出圈子
#include <stdio.h> #include <stdlib.h> #define N 13 /* 13个人围成一圈,从第1个人开始顺序报号1,2,3. 凡报到3者退 ...
- 程序员面试题经典问题——耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:123凡是报到“3”就退出圈子,最后留在圈子内的人就是出卖耶稣的叛徒。
package com.softeem.project1;public class Test1 {public static void main(String[] args) {//定义数组保存13位 ...
- 3、耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3...。凡是报到“3”就退出圈子,最后留在圈子内的人就是出卖耶稣的叛
int a[13] = {1,2,3,4,5,6,7,8,9,10,11,12,13};int number = 13; //记录圈内剩余的人数int count = 0; //通过计算器来模拟报数i ...
- 100个人围成一圈c语言,C语言 约瑟夫圈问题:N个人围成一圈,从第一个人开始按顺序报数并编号1,2,3,……N,然后开始从第一个人转圈报数,凡是报到3的退出圈子。则剩下的最后一个人编号是多少。...
样例输入3 输出2 输入100 输出91 代码及分析: #include int main() { int i,n,N,out,a[1000]; out=i=n=0; //用out记录退出圈子的 ...
- 三个球A、B、C,大小形状相同且其中有一个球与其他球重量不同。要求找出这个不一样的球。
#include<stdio.h> int main(){ int a,b,c; scanf("%d %d %d",&a,&b,&c); ...
- 有n个人围成一圈,顺序排号,从第一个人开始报数(1-3报数),凡是报数为3的人退出圈子,问最后留下的人原来的编号是多少?
有n个人围成一圈,顺序排号,从第一个人开始报数(1-3报数),凡是报数为3的人退出圈子,问最后留下的人原来的编号是多少? 花了半个下午搞出来的代码,调试了一会,一切正常,感觉还不错! '''解题思路: ...
- 13个人围成一圈,从第1个人开始顺序报号1,2,3.凡报到3者退出圈子。找出最后留在圈子中的人原来的序号。要求用链表实现。
13个人围成一圈,从第1个人开始顺序报号1,2,3.凡报到3者退出圈子.找出最后留在圈子中的人原来的序号.要求用链表实现. #include <stdio.h> #include < ...
最新文章
- kill Signal
- Nginx安装及配置简介
- 在NAnt中加入Vssget 任务
- MVC路由学习:自定义路由参数(用户看不到参数名),重新定义路由规则
- C语言高级编程:指针变量p指向的地址与p自身的地址
- Ubuntu 8.04下Netbeans的字体反锯齿解决(转)
- win 10 1709安装linux,小编详解win10 1709安装教程
- C++基础——类模板
- 小马儿随笔(七)——综合布线的安装时代
- C++ primer 第十一章 关联容器
- EM算法及python实现
- python超级简单爬虫
- 文档在线编辑开发心得
- SQL数据库被标为可疑/置疑/质疑的处理
- 使用wifi网卡笔记5---AP模式
- 音频之声道、采样位宽、采样率转换原理及其代码实现
- 从传统投放走向程序化购买, 浅谈户外广告发展前景
- android实践练习_android 练习之路 (五)
- import xx_rc 问题记录
- oracle oci,关于Oracle OCI驱动的使用
热门文章
- 共赢数据时代,释放无限可能!Smartbi受邀出席明道云合作伙伴大会!
- java语言与payth_Java语言与程序
- 航标灯实验c语言程序,单片机原理及应用习题 (带答案)
- 一号店静态html源代码,一号店html模板
- TI OMAP Bootloader Project 关于启动过程
- 自动下载forumdisplay.php,六酷社区论坛HOME页清新格调免费版 下载
- 搭载广和通5G LAN模组FM650-CN的5G工业网关已率先商用落地
- 优漫动游设计师如何快速获得在设计灵感?在这里找答案
- 13家企业获得第二批第三方支付牌照
- 【java】opencv + Tesseract(tess4j) 实现图片处理验证码识别