8 圆桌问题

问题描述:
圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处死……依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死n个人之后,圆桌上围坐的剩余的n个人全是好人。

输入范例 :

52 6
输出范例 :
BGGBGBGGBBBBGGGGBBBGBGGBGBBGGBBGBGBBGGGBBBGBGGBBGG
BBGBBGGGGBBBBGGBGGBBGBBGGBGBBGGBBBGGBGGBBGGGBBGBGG
GBGB


注意:存在一种情况指针,指到的时候正好m为6,但该位置的标记为‘B’,所以用一个while循环找到第一个不是‘B’的地方。


#include <iostream>
using namespace std;
struct ListNode
{char flag;ListNode *next;
};ListNode* createlist(int n){ListNode *head = new ListNode;ListNode *cur = new ListNode;cur = head;for(int i = 0 ; i < 2*n ; i++){ListNode *temp = new ListNode;temp->flag = 'A';cur->next = temp;cur = temp;}cur->next = head;return head;
}int main(){int n,m;cin>>n>>m;ListNode *head = createlist(n);//创建一个单链表,个数为2nListNode *cur = new ListNode;cur = head->next;int num = 0;int temp = 1;while(num != n){while(temp != m){if(cur->flag != 'A'){if(cur->next == head){cur = cur->next;}cur = cur->next;}else{if(cur->next == head){cur = cur->next;}cur = cur->next;temp++;}}while(cur->flag != 'A'){cur = cur->next;}cur->flag = 'B';//杀死的位置必须是标记为‘A’if(cur->next == head){cur = cur->next->next;}else{cur = cur->next;}num++;temp = 1;}ListNode *aa = new ListNode;aa = head->next;int total = 0;while(aa != head){if(aa->flag == 'A'){cout<<'G';total++;if(total == 50){cout<<endl;total = 0;}}if(aa->flag == 'B'){cout<<'B';total++;if(total == 50){cout<<endl;total = 0;}}aa = aa->next;}
}

DHU-链表-圆桌问题相关推荐

  1. DHU数据结构-循环单链表-ADT应用-圆桌问题

    目录 1.题目 2.题解 3.代码实现 1.题目 圆桌问题 作者: 冯向阳 时间限制: 1S 章节: DS:数组和链表 问题描述 : 目的:使用C++模板设计循环链表的抽象数据类型(ADT).并在此基 ...

  2. 圆桌问题(数据结构作业+数组和链表)(1024程序员不容易,这次给源码)

    文章目录 问题描述 输入说明 输出说明 输入范例 输出范例 题目分析 问题重点 思路分析 源码 事故现场 关于走路有点弄混了,分不清步数了 第一次提交 第二次提交 第三次提交 第四次提交 分析与总结 ...

  3. DHU数据结构-单链表-ADT应用-长整数加法运算(使用单链表存储计算结果)

    目录 1.题目 2.题解 3.代码实现 1.题目 单链表ADT模板应用算法设计:长整数加法运算(使用单链表存储计算结果) 作者: 冯向阳 时间限制: 1S 章节: DS:线性表 问题描述 : 目的:使 ...

  4. DHU 第一题 重排链表

    问题描述 : 给定一个单链表 L:L0→L1→-→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→- 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换 ...

  5. dhu 1.2 链表的中间结点

    链表的中间结点 时间限制: 1S类别: DS:数组与链表->链表–简单 晚于: 2022-03-17 23:55:00后提交分数乘系数50% 截止日期: 2022-03-20 23:55:00 ...

  6. dhu 1.3 反转链表 II

    反转链表 II 时间限制: 1S类别: DS:数组与链表->链表–较难 问题描述 : 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right ...

  7. 可由一个尾指针唯一确定的链表有_L2数据结构第08课 单向链表和循环链表

    L2-数据结构-第08课 单向链表和循环链表 线性表 线性表是一种常用的数据结构,其中的每一个元素(结点)都有唯一的前驱和唯一的后续.当然,第一个元素只有后续,最后一个元素只有前驱. 线性表一般分为& ...

  8. 约瑟夫环java链表_java使用链表实现约瑟夫环

    约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到m的那个人出列:他的下一个人又从1开始报数,数到m的那个人又出列:依此规律重 ...

  9. 链表有环是什么意思_互联网大厂offer收割之单向链表的概念及面试题大全

    链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力.链表的操作也离不开指针,指针又很容易导致出错.综合多方面的原因,链表题目在 ...

  10. 单链表插入元素 注释 c语言,数据结构之无头单链表的相关练习题——C语言实现(详细注释)...

    本文中所用到的相关链表操作实现均在我上篇博客中:https://blog..net/haoziai905/article/details/87099287 1.删除无头单链表的非尾结点 这道题的重点就 ...

最新文章

  1. mysql proxy 延迟严重_使用MySQL Proxy解决MySQL主从同步延迟
  2. mysql servicebroker_阿里云Kubernetes服务 - Service Broker快速入门指南
  3. java get方法不序列化_Java中的Json序列化,不容忽视的getter
  4. vb6 判断打印机是否有效_讲述3D打印机怎么用 初学者必看
  5. 设计模式之不简单的工厂模式(三)
  6. Spring:aspectj-autoproxy 简介
  7. matlab画多组数据折线图_Python数据分析之初识可视化
  8. Response.End(); 用HttpContext.Current.ApplicationInstance.CompleteRequest 代替
  9. MySQL某列增加标注_MySQL 使用CASE表达式给行做标记
  10. Matlab R2009b 版 license 到期问题
  11. 【通信原理】实验三 数字基带码型产生实验
  12. Linux常用命令、相关软件安装及项目部署
  13. 计算机硬盘按数据传输,同时让多个硬盘轻松同步数据传输
  14. 第一章 【教育基础知识和基本原理】
  15. 婆媳兵法之——短兵相接15天
  16. JAXWS CXF JAXB + MyEclipse + Maven Byron自學視頻04
  17. C#实现发送和接收邮件的winform邮箱(保存至MySQL本地数据库)Mail Client
  18. java 大于当前日期_java判断某日期 是否超过今天
  19. 免费赠送BTC和iPhone XS 揭开YEX虚拟盘的面纱
  20. Mac 安装BurpSuite2021.6

热门文章

  1. 不想丧班?BOSS直聘包场邀你免费嗨唱一夜 | 互联网行业公会
  2. C语言:L1-059 敲笨钟 (20 分)
  3. 优麒麟 19.04 正式版发布,激流勇进,精益求精!
  4. 一年级课程表(3月1日—3月4日)
  5. 大数据笔记10—java基础篇6(集合1-Collection)
  6. swfobject.js 详细解说
  7. 塔米狗|一文了解国有企业增资交易的要点与风险
  8. C#使用VLCPlayer播放视频并对视频抓图失败的解决方法
  9. 不得不使用的百度快照优化seo技巧
  10. linux桌面系统 9,从Linux桌面进入Win10桌面仅需九分五十秒,重装系统So Easy!