ACM循环链表实现教徒问题
17世纪法国数学家加斯帕在《数学的游戏问题》中讲的一个故事:n个教徒和n个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了个办法:2n个人围成一个圆圈,从第一个人开始依次循环报数,每数到第九个人就将他扔入大海,如此循环直到仅剩n个人为止 。问怎样的排法,才能使每次投入大海的都是非教徒。
【输入】 输入文件由一行构成,就是n的值。
【输出】 输出文件中是一行字符串,字符串由n个‘@’字符(代表教徒)和n个‘+’ 字符(代表非教徒)排列构成。该排列使得按照前面的约定每次投入大海的都是非教徒。
【输入范例】 15
【输出范例】 @@@@+++++@@+@@@+@++@@+++@++@@+
构建循环链表,将2n先定义为教徒赋值为@,通过指针操作链表结点寻找第九个人,将其赋值为+,若遇到已赋值为+的则跳过将其后续赋值为+,自写代码若有错误欢迎指出
代码
#include<stdio.h>/*循环链表 数组*/
#include<stdlib.h>
typedef struct dnote
{char data;struct dnote *next;//struct dnote *rear;
}node,*linklist;
linklist createlink(linklist L,int m,int n)/*尾插建表*/
{node *s,*r;
int i;
L=(linklist)malloc(sizeof(node));
r=L;for(i=0;i<m;i++){s=(linklist)malloc(sizeof(node));s->data='@';r->next=s;r=s;}s->next=L->next;//链尾指向链头r=L->next;//找到第九个人
while(m!=n){i=1;while(i!=9){if(r->data=='@'){i++;r=r->next;}elser=r->next; }while(r->data=='+'){r=r->next; }//if(r->data=='+')//r->next->data='+';//elser->data='+';m--;}
/*2+@@+ 3+++@@@*/r=L->next;//输出for(i=0;i<(2*n);i++)
{printf("%c",r->data);
r=r->next;}return 0;
}
int main()
{linklist L=NULL;int n,m;printf("输入n的值");scanf("%d",&n);m=2*n;createlink(L,m,n);return 0;
}
ACM循环链表实现教徒问题相关推荐
- 网内计算:可编程数据平面和技术特定应用综述
网内计算:可编程数据平面和技术特定应用综述 摘要--与云计算相比,边缘计算提供了更靠近终端设备的处理,降低了用户体验的延迟.最新的In-Network Computing范例采用可编程网络元素在数据达 ...
- ACM基础知识及算法
ACM 算法 难度 数据结构 栈 栈 1 单调栈 队列 一般队列 1 优先队列/单调队列 1 循环队列 2 双端队列 2 链表 一般链表 ...
- 前人对ACM学习的一些总结
freopen("in.txt","r",stdin); 一:知识点 数据结构: 1,单,双链表及循环链表 2,树的表示与存储,二叉树(概念,遍历)二叉树 ...
- ACM技术栈(知识栈)
一.知识点 数据结构: 1.单,双链表及循环链表 2.树的表示与存储,二叉树(概念,遍历)二叉树的应用(二叉排序树,判定树,博弈树,解答树等) 3.文件操作(从文本文件中读入数据并输出到文本文件中) ...
- ACM解题的一些技巧和方法
参加acm也一段时间了,决定重新总结下自己学到的一些东西,这样才会收获得更多. 比赛考验的不仅仅是知识面,思维能力,编码能力,更有团队合作的意识以及心态.平时接触的题目会涵盖各个方面的内容,我们都需要 ...
- ACM必学知识点清单
来源:https://blog.csdn.net/xuanandting/article/details/52160859 训练过ACM等程序设计竞赛的人在算法上有较大的优势,这就说明当你编程能力提高 ...
- ACM/ICPC竞赛
备战ACM资料 一:知识点 数据结构: 1,单,双链表及循环链表 2,树的表示与存储,二叉树(概念,遍历)二叉树的 应用(二叉排序树,判定树,博弈树,解答树等) 3,文件操作(从文本文件中读入数据并输 ...
- 牛人的ACM经验 (转)
牛人的ACM经验 (转) 一:知识点 数据结构: 1,单,双链表及循环链表 2,树的表示与存储,二叉树(概念,遍历)二叉树的 应用(二叉排序树,判定树,博弈树,解答树等) 3 ...
- 教徒与非教徒问题——Java
问题描述 17世纪法国数学家加斯帕在<数学的游戏问题>中讲的一个故事:n个教徒和n个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了个办法:2n个人围成一个圆圈, ...
最新文章
- Nginx防盗链详细设置
- jvm性能调优实战 - 30使用jmap和jhat摸清线上系统的对象分布
- 如何在一个.c文件里调用另一个.c文件里的变量
- 【Linux】一步一步学Linux——clear命令(241)
- appium---【Mac】Appium-Doctor提示WARN:“ opencv4nodejs cannot be found”解决方案
- LeetCode 286. 墙与门 多源BFS和DFS
- mysql sql 备份数据_mysql怎么进行数据库备份和还原,以及自动备份
- 诺基亚9.3再曝光:后置1亿像素圆形五摄 价格或超6000元
- 音视频编解码:NVIDIA Jetson Linux Multimedia API(总结)
- FFmpeg视频编解码库,无法解析的外部符号、找不到inttypes.h文件的问题
- 转,jQuery入门[4]-链式代码
- 关于SUSE linux
- mac电脑循环次数多少算新_在Mac上处理不同事务,这些软件必不可少,个个精品...
- 【IoT】产品设计:关于专利申请,这篇文章就够了
- TV版应用包名 TV常用apk包名 (当贝市场下载)
- 移动硬盘 计算机里不显示盘符,移动硬盘插在电脑上不显示盘符是怎么回事啊?...
- swift中检测跳转苹果自带地图、高德地图、百度地图、腾讯地图
- 宝塔面板服务器ip地址修改_宝塔,云帮手服务器控制面板,你用的哪一款?
- 咸鱼前端—html初识
- 滕州一中计算机竞赛,滕州一中3名学生“叶圣陶杯”获佳绩!高三学生蒋雨含获决赛一等奖...