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

【输入】输入文件由一行构成,就是n的值。

【输出】输出文件中是一行字符串,字符串由n个‘@’字符(代表教徒)和n个‘+’ 字符(代表非教徒)排列构成。该排列使得按照前面的约定每次投入大海的都是非教徒。

【输入范例】15

【输出范例】@@@@+++++@@+@@@+@++@@+++@++@@+

代码如下:

#include<stdio.h>
#include<string.h>
int main()
{int i,flag,n,count;char a[100100];printf("本程序实现对教徒和非教徒的位置确定\n");printf("please put in a number n:\n");scanf("%d",&n);count=2*n;memset(a,'@',count);/*先讲2n个人都初始化为教徒*/a[count]='\0';for(flag=0,i=0;count>n;i++)/**/{if(i==2*n)i=0;/*如果数到最后就重头,以达到数组头尾相连*/if(a[i]=='@')/*继续数还没被扔下去的人*/flag++;if(flag==9)/*数到第九个,被扔,此位置为非教徒*/{a[i]='+';/*非教徒*/count--;flag=0;/*重置计数的数*/}}printf("%s\n",a);return 0;
}

教徒与非教徒的生存问题(数组解)相关推荐

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

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

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

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

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

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

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

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

  5. 34. 在排序数组中查找元素的第一个和最后一个位置给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标

    34. 在排序数组中查找元素的第一个和最后一个位置 难度中等2012 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target.请你找出给定目标值在数组中的开始位置和结束位置. 如果 ...

  6. ES6-4/5 解构赋值、函数默认值、数组解构、对象解构

    ES-4 解构赋值.函数默认值.数组解构.对象解构 ES-5 隐式转换.函数参数解构.解构本质.()用法 一 解构赋值 1 虚值 含义:在Boolean转换结果为假的值falsy 2 函数默认值 ES ...

  7. es6中数组的解构_ES6中的数组解构简介

    es6中数组的解构 by Kevwe Ochuko 通过Kevwe Ochuko Destructuring in JavaScript is a simplified method of extra ...

  8. ES6/06/ES6简介,ES6新增语法,let声明变量,const声明常量,var,let和const总结,数组解构,对象解构,箭头函数,剩余参数

    ES6简介 ES全称:ECMAScript ; 由ECMA国际化组织制定的标准脚本语言的标准化规范: 为什么使用ES6? 每一次标准的诞生都意味着语言的完善,功能的加强,JavaScript语言本身也 ...

  9. java静态变量重复new_Java非静态成员变量之死循环(详解)

    1.非静态成员变量 当成员变量为非静态成员变量且对当前类进行实例化时,将会产生死循环 例子: public class ConstructorCls { private ConstructorCls ...

最新文章

  1. CMD——ping及用其检测网络故障
  2. NHibernate之旅(8):巧用组件之依赖对象
  3. 2020-2021Android中高级面试题大全
  4. 每天一道LeetCode----从数组中选择若干不连续元素使得总和最大
  5. ubuntu 远程桌面及Qt安装
  6. Rhel7 设置目录权限,acl权限
  7. linux 启动rsyslog服务_linux rsyslog服务部署
  8. 解决在已办任务菜单中都会抛出异常,由于definitionId=undefined导致的问题
  9. 打造个人专属的微型linux--启动原理篇
  10. 学习笔记(2):uni-app实战社区交友类app开发-引入css动画库
  11. 会话和连接的区别_websocket和ajax区别,只有这5点不同
  12. Windows USB驱动开发点滴积累备忘录
  13. AR/VR learning (3)--物体的运动与动画(iTween插件的使用)
  14. 【咸鱼教程】一个简单的画布(阴阳师画符)
  15. Mac安装Mysql(图文解说详细版)
  16. Linux下安装Java运行环境
  17. argument 1 must be str, not PosixPath
  18. 坐标转换—高斯正反算(附测量助理最新版软件下载)
  19. 数字化转型小贴士和陷阱
  20. 使用python和tornado实现多人网页聊天程序--界面

热门文章

  1. 服务器经常被攻击怎么办?
  2. 小红书网页版timestamp2
  3. linux 日语软件下载,教你在 Arch Linux 中设置日语环境
  4. 一个月来运营工作总结
  5. python自动裁剪图片_自动裁剪与Python / PIL的图像(Automatically cropping an ima
  6. 未来视频会议特点及屏幕共享技术解析
  7. 云计算三种服务模式举例_云计算的三种服务模式和四种部署模型
  8. WMS系统与ERP仓储管理的差异
  9. Internet explorer 11浏览器找回(仅win10)
  10. INSERT INTO 和 INSERT IGNORE INTO