今天做了一道题,收益颇多,在此分享。
题目如下:
17 世纪法国数学家加斯帕在《数学的游戏问题》中讲的一个故事:n个教徒和n个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了个办法:2n 个人围成一个圆圈,从第一个人开始依次循环报数,每数到第九个人就将他扔入大海,如此循环直到仅剩 n 个人为止。问怎样的排法,才能使每次投入大海的都是非教徒。

这道题求解需要用到数组和多个变量。
首先由题目得知2n个人,一半教徒,一半非教徒,要利用围成圈每轮依次报数为9的人被抓出直至被抓出一半人的方式将所有非教徒踢出船外。
可以看出题中有很多条件需要多个变量来限制。如用a[2n]来表示一船的人,用1和0来确定每位船员的身份,用j来判定哪位船员是第九人非教徒,用k来表示已有的非教徒人数。
因为他需要抓出非教徒,那么我们可以先将所有的人定为教徒,即a[i]=1,
再来个if(a[i]=1)将所有非教徒0排除在外,因为抓出来的人不再进行讨论。
再通过j++和if(j= =9)来确定第九位船员是非教徒,从而赋值此船员为0,即a[i]=0,继续k++,因为此时抓出了非教徒一位,所以k加一。
然后i++当所有船员过了一遍后,i重新赋值为0,if(i= =2n)i=0;
又由if(k= =n)来确定是否抓完所有非教徒跳出循环。
最后输出排列。

#include<stdio.h>
int main()
{int n,i,j,k;
scanf("%d",&n);
int a[2n]={0};
for(i=0;i<2n;i++)
a[i]=1;
for(i=0,j=1,k=0;k<n;i++,j++)
{
if(j= =9)
{

if(a[i]= =1)
{
a[i]=0;
k++;
}
j=0;
}
if(i= =2n-1)
i=0;
}
for(i=1;i<2n;i++)
{
if(a[i]= =0) printf(“+”);
if(a[i]= =1) printf(“@”);
}
return 0;
}

我与教徒们的深海之险相关推荐

  1. 15个教徒和15 个非教徒在深海上遇险

    /*这是17世纪的法国数学家加斯帕在<数目的游戏问题>中讲的一个故事:15个教徒和15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一 ...

  2. 约瑟夫问题这是17世纪的法国数学家加斯帕在《数目的游戏问题》中讲的一个故事:15个教徒和15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈

    *问题分析与算法设计 约瑟夫问题并不难,但求解的方法很多:题目的变化形式也很多.这里给出一种实现方法. 题目中30个人围成一圈,因而启发我们用一个循环的链来表示.可以使用结构数组来构成一个循环链.结构 ...

  3. 中国最险六大寺庙,最后一座至今无人登临

    全世界只有3.14 % 的人关注了 爆炸吧知识 来源:「风景线」 佛教远离尘世的特性使得很多寺庙修建于偏僻险要的山野,看似岌岌可危的建筑,却能屹立千百年而不倒,这不得不感叹古人智慧的伟大,这6大险要寺 ...

  4. 华山天下险!——再谈岳不群

      人心险于山川, 难于知天. --庄子 一 "墙角后一人纵声大笑,一个青衫书生踱了出来,轻袍缓带,右手摇着折扇,神情甚是潇洒--林平之--眼见这书生颏下五柳长须,面如冠玉,一脸正气,心中景 ...

  5. 教徒与非教徒问题——Java

    问题描述 17世纪法国数学家加斯帕在<数学的游戏问题>中讲的一个故事:n个教徒和n个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了个办法:2n个人围成一个圆圈, ...

  6. 教徒与非教徒的生存问题(数组解)

    17世纪法国数学家加斯帕在<数学的游戏问题>中讲的一个故事:n个教徒和n个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了个办法:2n个人围成一个圆圈,从第一个人 ...

  7. 【蓝桥杯基础练习】教徒与非教徒问题

    题目 17世纪法国数学家加斯帕在<数学的游戏问题>中讲的一个故事:n个教徒和n个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了个办法:2n个人围成一个圆圈,从第 ...

  8. ACM循环链表实现教徒问题

    17世纪法国数学家加斯帕在<数学的游戏问题>中讲的一个故事:n个教徒和n个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了个办法:2n个人围成一个圆圈,从第一个人 ...

  9. 圣教徒问题(C语言)

    17世纪法国数学家加斯帕在<数学的游戏问题>中讲的一个故事:n个教徒和n个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了个办法:2n个人围成一个圆圈,从第一个人 ...

最新文章

  1. 使用简单的轻量级移动web应用开发框架 - Sidetap
  2. 多个反斜杠的消除处理
  3. pytorch开发环境准备(学习资料自备)
  4. 在SAP除了使用Cordova生产移动应用外,还有这种方式
  5. 4步win7下简单FTP服务器搭建(试验成功)
  6. CSDN怎么换行?添加空行
  7. tensorflow之读取jpg图像长和宽
  8. 亲,愚人节要来了!记得带着智商出门哦
  9. 大数据第三季--flume(day2)-徐培成-专题视频课程
  10. 有关三年级计算机课的日记,今天的自习课三年级日记
  11. 输入框技巧 禁用输入法 禁用提示 提示归类
  12. 2017 Multi-University Training Contest 1 solutions BY 北京航空航天大学
  13. java在线编译网站
  14. 微软CEO鲍尔默失策太多次 应只拿1美元年薪
  15. 表设计工具EZDML下载
  16. virtualization - Ubuntu Budgie screen distortion in Hyper-V - Ask Ubuntu
  17. 搜狗SEO工具批量查询搜狗收录页面
  18. 【pycharm】pycharm配置caffe路径pycaffe环境变量。ImportError: dynamic module does not define module export
  19. OB0205 obsidian 主题修改插件:Style Settings插件使用
  20. 刘振亚:2050年建成全球能源互联网

热门文章

  1. Uncaught SyntaxError: Unexpected token o in JSON at position 1问题的解决
  2. 单源最小路径BellMan Ford算法
  3. matlab牵引,基于MATLAB_Simulink的牵引变压器建模与仿真
  4. 从产品经理人的角度规划项目:排课系统
  5. FPGA基础知识极简教程(7)详解亚稳态与跨时钟域传输
  6. python print end报错_下面代码的输出结果是 for i in Python: print(i,end= )_学小易找答案...
  7. OpenCV入门系列 —— bilateralFilter双边滤波
  8. HTML-表格、表单
  9. oracle习题练习
  10. Transformer image recongnition