UVA133 - The Dole Queue【紫书例题4.3】
2024-09-30 14:08:30
题意:
n个人围成个圆,从1到n,一个人从1数到k就让第k个人离场,了另一个人从n开始数,数到m就让第m个人下去,直到剩下最后一个人,并依次输出离场人的序号。
水题,直接上标程了
#include<stdio.h>
#define maxn 25
int n, k, m, a[maxn];
// 逆时针走t步,步长是d(-1表示顺时针走),返回新位置
int go(int p, int d, int t) {
while(t--) {
do { p = (p+d+n-1) % n + 1; } while(a[p] == 0); // 走到下一个非0数字
}
return p;
}
int main() {
while(scanf("%d%d%d", &n, &k, &m) == 3 && n) {
for(int i = 1; i <= n; i++) a[i] = i;
int left = n; // 还剩下的人数
int p1 = n, p2 = 1;
while(left) {
p1 = go(p1, 1, k);
p2 = go(p2, -1, m);
printf("%3d", p1); left--;
if(p2 != p1) { printf("%3d", p2); left--; }
a[p1] = a[p2] = 0;
if(left) printf(",");
}
printf("\n");
}
return 0;
}
最新文章
- 平衡二叉树AVL删除
- ORA-01012: not logged on
- Android工作学习第5天之Activity的传值问题
- Json 字符串 转换为 DataTable数据集合
- 初步理解Java的三大特性——封装、继承和多态
- 反射-Reflect
- 关于const
- Fixflow引擎解析(三)(模型) - 创建EMF模型来读写XML文件
- shell脚本例子
- The Euler function(欧拉函数)
- Linux入门之常用命令(1)
- GCD hdu2588
- Java中方法的重载和重置(覆盖)的区别
- Sql Server服务远程过程调用失败
- LeetCode - Trim a Binary Search Tree
- tomcat 配置文件server.xml 详解 Connector Engine Host Context
- Detect Changes in Network Connectivity
- MarkdownPad2 在 Windows10 下 预览无法显示
- (转)如何解决VC中的警告warning C4251 needs to have dll-interface
- oracle 优化方案小记
热门文章
- [RxJS] exhaustMap vs switchMap vs concatMap
- 全栈JavaScript之路(十)学习 DocumentFragment 类型 节点
- Jmeter压测问题_Non HTTP response code: java.net.ConnectException
- 开发DataSnapserver
- 将tflearn的模型保存为pb,给TensorFlow使用
- Socket之shutdown()用法
- java 语法 —— final
- P2532 [AHOI2012]树屋阶梯 卡特兰数
- 95.Extjs 表单中自定义的验证规则 VTypes
- 机器学习——Day 1 数据预处理