UVA133
减少领取救济金排队的长度是一个严重的问题,The New National Green Labour Rhinoceros
Party (这个党派)依据如下规则.
每天来领取救济金的人排成一个大圆环.任选一人标识为1,其他的人按照逆时针顺序开始标识,一直到N(第N个人在第一个人的左边).
一个官员逆时针从编号为1的人开始数,数K人后结束,另外一个官员从N开始,顺时针开始,数m人结束.
俩个被选中的人从圆环里拿出来.如果俩个官员选中的是同一个人,那么这个人送去从政,每个官员然后从下一个可用的人开始,
继续数,直到没有人剩下,注意两个被选 中的人是同时走掉的,所以就有可能两个官员选中一个人
输入
读取三个数,N,k,m(k,m>0),计算出被选中人的顺序,0 0 0代表输入结束
输出
对每一个三元组,输出一行表示被选中人的编号的顺序,每一个数字应该占三个字符,俩个被选中人,逆时针被选中人的编号在前面,
每一对之间以逗号分开
#include<stdio.h>
#include<iostream>
using namespace std; struct Node
{
Node* next;
Node* pre;
int data;
};
Node* init(const int n);
void printNode(const int n, const Node* kNode, const Node* mNode);
int main()
{
freopen("d:\\1.txt", "r", stdin);
int n, k, m;
while (cin)
{
cin >> n >> k >> m;
if(n == 0 && k == 0 && m == 0)
{
return 0;
}
Node* head = init(n);
Node* tail = head->pre;
while (n--)
{
Node* kNode = head;
Node* mNode = tail;
for(int i = 1; i < k; i++)
{
kNode = kNode->next;
}
for(int i = 1; i < m; i++)
{
mNode = mNode->pre;
}
printNode(n, kNode, mNode); kNode->pre->next = kNode->next;
kNode->next->pre = kNode->pre;
head = kNode->next;
if(kNode == mNode)
{
tail = kNode->pre;
}
else
{
tail = mNode->pre;
mNode->next->pre = mNode->pre;
mNode->pre->next = mNode->next;
if(head==mNode)
head = mNode->next;
n--;
}
}
cout << endl;
} return 0;
} Node* init(const int n)
{
Node* head = NULL;
Node* next = NULL;
for(int i = 1; i <= n; i++)
{
Node* node = new Node;
node->data = i;
if(i == 1)
{
head = node;
next = node;
continue;
}
next->next = node;
node->pre = next;
next = node;
}
next->next = head;
head->pre = next;
return head;
}
void printNode(const int n, const Node*kNode, const Node* mNode)
{
if(kNode == mNode)
{
if(n == 0)
{
printf("%3d", kNode->data);
}
else
{
printf("%3d,", kNode->data);
}
}
else
{
if(n == 1)
{
printf("%3d%3d", kNode->data, mNode->data);
}
else
{
printf("%3d%3d,", kNode->data, mNode->data);
}
}
}
相关题,约瑟夫环,做DP再做
UVA133的更多相关文章
- uva133 救济金发放
#include<stdio.h> #define maxn 20 ], n; int go( int p,int d,int t ) {// printf("a[%d]=%d\ ...
- UVa133.The Dole Queue
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- uva133 The Dole Queue ( 约瑟夫环的模拟)
题目链接: 啊哈哈,选我选我 思路是: 相当于模拟约瑟夫环,仅仅只是是从顺逆时针同一时候进行的,然后就是顺逆时针走能够编写一个函数,仅仅只是是走的方向的标志变量相反..还有就是为了(pos+flag+ ...
- 【紫书】uva133 The Dole Queue 参数偷懒技巧
题意:约瑟夫问题,从两头双向删人.N个人逆时针1~N,从1开始逆时针每数k个人出列,同时从n开始顺时针每数m个人出列.若数到同一个人,则只有一个人出列.输出每次出列的人,用逗号可开每次的数据. 题解: ...
- 救济金发放(UVa133)
题目具体描述见:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_prob ...
- UVA133 - The Dole Queue【紫书例题4.3】
题意: n个人围成个圆,从1到n,一个人从1数到k就让第k个人离场,了另一个人从n开始数,数到m就让第m个人下去,直到剩下最后一个人,并依次输出离场人的序号. 水题,直接上标程了 #include&l ...
- 算法习题---4.3救济金发放(UVa133)
一:题目 (n< )个人站成一圈,逆时针编号为1~n.有两个官员,A从1开始逆时针数,B从n开始顺时针数.在每一轮中,官员A数k个就停下来,官员B数m个就停下来(注意有可能两个官员停在同一个人上 ...
- 4_3 救济金发放(UVa133)<子过程/函数设计>
为了缩短领救济品的队伍,NNGLRP决定了以下策略:每天所有来申请救济品的人会被放在一个大圆圈,面朝里面.标明一个人为编号1号,其他的就从那个人开始逆时针开始编号直到N.一个官员一开始逆时针数,数k个 ...
- uva133-S.B.S.
The Dole Queue In a serious attempt to downsize (reduce) the dole queue, The New National Green Lab ...
随机推荐
- 位操作Bit Operation算法题
一道让你拍案叫绝的算法题 这是一道看完答案会觉得很简单,但做之前很难想到答案的题目!!! 不信? Let us go ! 题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均 ...
- 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.3 日历
日历 日历可以单独应用于规则中,也可以和timer结合使用在规则中使用.通过属性calendars来定义日历.如果是多个日历,则不同日历之间用逗号进行分割. 在Drools中,日历的概念只是将日历属性 ...
- stenciljs ionic 团队开发的方便web 组件框架
stenciljs 是ionic 团队开发的方便组件话开发的js 框架,具体以下特点 简单,零配置,简单的api,typescript 支持 性能,压缩之后6Kb,支持ssr,以及强大的原生web c ...
- stardog graphql 简单操作
预备环境: 下载stardog 软件包 graphql 查询地址 创建一个简单数据库 ./stardog-admin db create -nstarwars graphql 查询方式 http 地址 ...
- Oracle 跨库 查询 复制表数据
在目前绝大部分数据库有分布式查询的需要.下面简单的介绍如何在oracle中配置实现跨库访问. 比如现在有2个数据库服务器,安装了2个数据库.数据库server A和B.现在来实现在A库中访问B的数据库 ...
- 【转】RS232、RS485、TTL电平、CMOS电平
原文网址:http://blog.sina.com.cn/s/blog_63a0638101018grc.html RS232.RS485.TTL电平.CMOS电平 什么是TTL电平.CMOS电平.R ...
- chrome 小技巧:保持元素的hover状态
审查元素,选中需要hover的标签 点击"Styles"菜单中的":hov",弹出 Force element state 选中相应的 :hover :acti ...
- mysql的一些 参数查询
1 查询 事务 超时时间: SHOW GLOBAL VARIABLES LIKE 'innodb_lock_wait_timeout'; (默认innodb引擎事务的超时时间) 2 查询事务隔离级别 ...
- FineUI导出Excel
1.[经验分享]导出Excel的乱码问题http://www.fineui.com/bbs/forum.php?mod=viewthread&tid=6326&highlight=Ex ...
- 基于ionic框架封装一个图片轮播指令的几点
在这里我想在项目中封装一个图片轮播的指令 (本项目使用的是ionic框架) 1)定义指令 define(['app'],function(myapp){ myapp.directive('myslid ...