2015/10/16/

///by XBW//

//环境  vs2013//

这是我们的数据结构的一个作业题,一个小作业之所以上博客,是希望在此mark一下,祭奠我失去的两天时光,以此警醒我要读明白题目之后再做题;先看一下被自己坑了的题目;

Home Web Board ProblemSet Standing Status Statistics

Problem B: 击鼓传花

Time Limit: 1 Sec   Memory Limit: 2 MB
Submit: 1429   Solved: 497
[ Submit][ Status][ Web Board]

Description

设有N个人围成一个圈,每人手里都握着一个令牌写明一个数字(随机生成的)。从第一个人开始玩“击鼓传花”游戏,第一个击的次数为其令牌上写明的数字数(假设为m1)。第m1个人出列。下次再从第m1+1个人开始新的“击鼓传花”击的次数也为其令牌上写明的次数,等于该次数的人出列。重复以上过程直到所有人都出列为止。

Input

输入第一行为测试数据组数。每组测试数据2行,第1行一个整数n(1<=n<=10000),代表人数,第2行有n个空格隔开的整数代表mi(1<=mi<=5000)。

Output

对每组测试数据输出2行,第1行为数据组数,第2行为所有人顺序出队的序列,格式见样例。

Sample Input

1
5
1 2 3 4 5

Sample Output

Case #1:
2 1 3 4

HINT

考察知识点:循环链表,时间复杂度O(sum{m}),空间复杂度O(n)
从1开始,传1次:1->2。2出列。
从3开始,传3次:3->4->5->1。1出列。
从3开始,传3次:3->4->5->3。3出列。
从4开始,传4次:4->5->4->5->4。4出列。

Append Code

[ Submit][ Status][ Web Board]

这个就是我们的题目,就是因为没有看清楚是输出玩家手中的号码牌还是玩家的顺序,不是输出号码牌,而是输出玩家的位置;

看一下伤心的代码吧

#include <iostream>
using namespace std;
typedef struct LNode
{int data;//玩家号码牌int caonima;//一时生气搞得变量,他就是记录玩家位置的struct LNode *next;
}*LinkList;
void CreatList(LinkList *L)
{*L = new LNode;(*L)->next = *L;(*L)->caonima = 1;
}
void InsertList(LinkList *L, int t)//给链表赋值
{int num;int caonima = 1;LinkList p = *L, s;for (int i = 0; i < t; i++){cin >> num;s = new LNode;s->data = num;s->caonima = caonima++;s->next = p->next;p->next = s;if (p == *L)*L = s;p = p->next;}
}
void DestroyList(LinkList *L)
{LinkList q, p = (*L)->next; /* p指向头结点 */while (p != *L) /* 没到表尾 */{q = p->next;delete(p);p = q;}delete(*L);*L = NULL;
}
void ClearList(LinkList *L) /* 改变L */
{ /* 初始条件:线性表L已存在。操作结果:将L重置为空表 */LinkList p, q;*L = (*L)->next; /* L指向头结点 */p = (*L)->next; /* p指向第一个结点 */while (p != *L) /* 没到表尾 */{q = p->next;delete(p);p = q;}(*L)->next = *L; /* 头结点指针域指向自身 */
}
int main()
{int N;int Counts = 0;cin >> N;while (N--){cout << "Case #" << ++Counts << ":" << endl;LinkList L;LNode *p, *q, *s;CreatList(&L);p = L;q = L;int T;cin >> T;if (T == 0){cout << endl;continue;}InsertList(&L, T);L = p;T--;int first = 1;while (T--){p = p->next;if (p == L){p = p->next;}int con = p->data;for (int i = 0; i < con; i++){if (p->next == L){p = p->next;}if (con - i == 1){q = p;}p = p->next;}if (first){cout << p->caonima;//输出位置,而不是号码牌first = 0;}else{cout << " " << p->caonima;//同上}s = q->next;//删除指针q->next = s->next;delete(s);p = q;}cout << endl;ClearList(&L);DestroyList(&L);}
}

心好痛
你们看了是什么感觉呢,
希望大家能简化一下程序,指出不必要的操作,或者更好的方法,谢谢大家了,以后还是读明白题再做吧

数据结构之 击鼓传花相关推荐

  1. 数据结构之栈和队列以及如何封装栈和队列,栈和队列的实例(进制转换和击鼓传花)

    什么是数据结构? 不同的书对数据结构有不同的定义,例如: "数据结构是数据对象,以及存在于该对象的实例和 组成实例的数据元素之间的各种联系.这些联系可以通过定义相关的函数来给出." ...

  2. 击鼓传花java_关于javascript:JavaScript-使用数据结构队列来实现击鼓传花

    击鼓传花游戏 原游戏规则: 班级中玩一个游戏,所有学生围成一圈,从某位同学手里开始向旁边的同学传一束花. 这个时候某个人(比方班长),在击鼓,鼓声停下的一刻,花落在谁手里,谁就进去表演节目 在编程中的 ...

  3. 数据结构--队列--js击鼓传花算法实现

    击鼓传花游戏 原游戏规则: 班级中玩一个游戏,所有学生围成一圈,从某位同学手里开始向旁边的同学传一束花. 这个时候某个人(比如班长),在击鼓,鼓声停下的一刻,花落在谁手里,谁就出来表演节目 一般在编程 ...

  4. JavaScript 击鼓传花的游戏 使用数据结构---队列来实现击鼓传花

    击鼓传花游戏 原游戏规则: 班级中玩一个游戏,所有学生围成一圈,从某位同学手里开始向旁边的同学传一束花. 这个时候某个人(比如班长),在击鼓,鼓声停下的一刻,花落在谁手里,谁就出来表演节目 一般在编程 ...

  5. 分享一个有意思题目--击鼓传花

    在看javaScript数据结构与算法这本书时,看到一个挺有意思的题目--击鼓传花 在这个游戏中,孩子们围成一个圆圈,把花尽快地传递给旁边的人.某一时刻传花停止, 这个时候花在谁手里,谁就退出圆圈结束 ...

  6. JS使用普通队列实现击鼓传花游戏

    最近复习到了数据结构中的普通队列部分,来实现一个击鼓传花游戏的应用. 循环队列的一个例子就是击鼓传花(hot potato),在这个游戏中,孩子们围成一个圆圈,把花尽快地传递给旁边的人.某一时刻传话停 ...

  7. JavaScript通过队列和双端队列实现击鼓传花游戏

    游戏规则: 民间击鼓传花游戏,也称传彩球.数人.十数人或数十人围成一个圆圈,把花尽快地传递给旁边的人.某一时刻传花停止,这个时候花在谁手里,谁就退圈.结束游戏.重复该过程,直到只剩一个人(胜利者). ...

  8. 击鼓传花c语言编程题,c语言-第5章 循环程序设计.ppt

    <c语言-第5章 循环程序设计.ppt>由会员分享,可在线阅读,更多相关<c语言-第5章 循环程序设计.ppt(83页珍藏版)>请在人人文库网上搜索. 1.第5章 循环程序设计 ...

  9. 击鼓传花:对比 muduo 与 libevent2 的事件处理效率

    前面我们比较了 muduo 和 libevent2 的吞吐量,得到的结论是 muduo 比 libevent2 快 18%.有人会说,libevent2 并不是为高吞吐的应用场景而设计的,这样的比较不 ...

最新文章

  1. Nginx配置跨域请求 Access-Control-Allow-Origin *
  2. ajax跨域问题解决方案
  3. 事件源event.target
  4. 安利一个超好用的Pandas数据挖掘分析神器
  5. javascript 控制弹出窗口
  6. 二维GROUP BY
  7. springboot监控服务器信息,面试官:聊一聊SpringBoot服务监控机制
  8. MyCat分布式数据库集群架构工作笔记0016---高可用_单表存储千万级_海量存储_垂直分库划分原则
  9. CentOS环境设置Hbase自启动
  10. 李宏毅 -《深度学习人类语言处理》国语版(2020)视频课程及ppt分享
  11. [转] 驱动模拟键盘鼠标
  12. ADC信噪比计算公式
  13. linux 指令安装显卡驱动,Linux 16.04 LTS 安装显卡驱动
  14. 关于jsoncpp使用时报错Use StreamWriterBuilder instead
  15. 微信网页授权接口 对象存储
  16. 约束最优化求解-拉格朗日函数Hesse阵的SQP二次规划方法求解约束最优化问题-梯度法求解无约束最优化问题
  17. Jaca程序基础学习笔记
  18. windows系统下ink!canvas-node安装
  19. HTML/JSP中一些单书名号标签的用途
  20. 【献计一刻】软件开发小工的学习和工作清单

热门文章

  1. java毕业设计峨眉山景点介绍及旅游攻略推荐平台Mybatis+系统+数据库+调试部署
  2. WINCE里随时用HOT KEY切出中文输入法
  3. 端口问题让HP1010在WIN7下打印速度超慢
  4. jni学习实例(三)-a7105模块驱动之activity
  5. php 5.4 fastcgi,护卫神·PHP套件[FastCGI],PHP5.4.41
  6. 元宇宙江湖里的“牛鬼蛇神”
  7. 搭建一个游戏平台运营团队都需要什么?
  8. AnyDVD HD 6.1.2.3 Final
  9. 对某安卓应用进行分析爬取课表数据制作懒人课表(二)
  10. MATLAB学习笔记1:MATLAB概述