(hdu step 8.1.6)士兵队列训练问题(数据结构,简单模拟——第一次每2个去掉1个,第二次每3个去掉1个.知道队伍中的人数<=3,输出剩下的人 )
题目:
士兵队列训练问题 |
| Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) |
| Total Submission(s): 56 Accepted Submission(s): 37 |
|
Problem Description
某部队进行新兵队列训练,将新兵从一開始按顺序依次编号,并排成一行横队。训练的规则例如以下:从头開始一至二报数。凡报到二的出列,剩下的向小序号方向靠拢,再从头開始进行一至三报数。凡报到三的出列,剩下的向小序号方向靠拢,继续从头開始进行一至二报数。。。。以后从头開始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。
|
|
Input
本题有多个測试数据组,第一行为组数N,接着为N行新兵人数,新兵人数不超过5000。
|
|
Output
共同拥有N行,分别相应输入的新兵人数,每行输出剩下的新兵最初的编号。编号之间有一个空格。
|
|
Sample Input
2 |
|
Sample Output
1 7 19 |
|
Author
Cai Minglun
|
|
Source
杭电ACM集训队训练赛(VI)
|
|
Recommend
lcy
|
题目分析:
简单模拟。这道题可能对输入例子怎么得到输出例子的有点疑惑。下面是自己的一些理解:
代码例如以下:
/*
* f.cpp
*
* Created on: 2015年3月19日
* Author: Administrator
*/ #include <iostream>
#include <cstdio> using namespace std; const int maxn = 5001; int soldier[maxn]; int main() {
int t;
scanf("%d", &t);
while (t--) {
int n;
scanf("%d", &n); int i;
for (i = 1; i <= n; ++i) {
soldier[i] = i;
}
int cnt = 0;
int sum = n; if (sum <= 3) {
int j; int flag = 1; for (j = 1; j <= n; ++j) {
if (flag == 1) {
flag++;
printf("%d", soldier[j]);
} else {
printf(" %d", soldier[j]);
}
}
printf("\n"); continue;
} while (true) {//当队伍中的人数>3的时候不断地循环
int j;
for (j = 1; j <= n; ++j) {//第一次每两个去掉一个
if (soldier[j] != 0) {
cnt++; if (cnt == 2) {
cnt = 0;
soldier[j] = 0;
sum--;
}
} } //假设经历完每两个去掉一个后,队伍中的人数已经<=3
if (sum <= 3) {
break;//则跳出循环
} //能运行下面代码证明队伍中的人数还没有<=3 cnt = 0;//将计数器中的清0 for (j = 1; j <= n; ++j) {//第二次每3个去掉一个
if (soldier[j] != 0) {
cnt++; if (cnt == 3) {
cnt = 0;
soldier[j] = 0;
sum--;
}
}
} if (sum <= 3) {//假设经历每3个去掉一个后,队伍中的人数已经<=3
break;//则跳出循环
} //假设还能运行下面代码,那么证明队伍中的忍术还没有<=3 cnt = 0;//将计数器清0
} //把最后剩下的人输出来
int flag = 1;
for (i = 1; i <= n; ++i) {
/**
* 要注意对数据输出格式的处理.
* 输出格式要严格遵循x_x_x_x的形式( _表示一个空格 )
* 不要输出成x_x_x_x_ ,这样会PE
*/
if (soldier[i] != 0) {
if (flag == 1) {//第一个数据不须要输出空格,即输出"x"形式的数据就可以
flag++;
printf("%d", soldier[i]);
} else {//假设不是第一项数据
printf(" %d", soldier[i]);//输出"_x"形式的数据
}
}
}
printf("\n");
} return 0;
}
(hdu step 8.1.6)士兵队列训练问题(数据结构,简单模拟——第一次每2个去掉1个,第二次每3个去掉1个.知道队伍中的人数<=3,输出剩下的人 )的更多相关文章
- HDU 4509 湫湫系列故事——减肥记II (简单模拟)
题意:一天一共有1440分钟,主人公每天有n件事要做,给出这n件事开始跟结束的时间,然后让你求出,空闲的时间的总分钟数是多少. 解题报告:简单模拟,只要开个一维数组标记那个每个分钟是否是有事的就可以了 ...
- HDU 1276 士兵队列训练问题(队列)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1276 题目: 士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Othe ...
- HDU 1276 士兵队列训练问题(模拟)
原题代号:HDU 1276 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1276 题目原题: 士兵队列训练问题 Time Limit: 2000/10 ...
- 解题报告:hdu 1276 士兵队列训练问题 - 简单题
Problem Description 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行 ...
- ACM学习历程—HDU 1276 士兵队列训练问题(队列)
Description 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠 拢,再从头开始进行一至三报数,凡 ...
- 暑假集训(1)第一弹 -----士兵队列训练问题(Hdu1276)
Description 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报 ...
- hdoj 1276 士兵队列训练问题【模拟】
士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- HDU1276(士兵队列训练模拟与链表)
HDU1276 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descripti ...
- A - 士兵队列训练问题
A - 士兵队列训练问题 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit ...
随机推荐
- Android 开发笔记___AutoComplateTextView__自动完成文本框
原理:EdtText结合监听器TextWatcher与下拉框spinner,一旦监控到EditText的文本发生变化,就自动弹出适配好的文字下拉内容. 属性以及设置方法: XML中的属性 代码中 说明 ...
- 引入servlet概念
Servlet简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中.Servlet容器负责Servlet和客户的通信以及调用Servlet的方法,Servlet和客户 ...
- python3 xpath数据获取案例
import requestsfrom retrying import retryfrom lxml import etreeimport json class DaCheng(object): de ...
- SQLSERVER实现更改表名,更改列名,更改约束代码
1.修改表名 格式:sp_rename tablename,newtablename ? 1 sp_rename tablename,newtablename 2.修改字段名 格式:sp_rename ...
- Docker Register安装与基本认证
准备 基本事项 Docker环境 登录授权方式 镜像存放地址 HTTPS外网访问 启动Docker Registry 1. 基本事项 本篇涉及到的数据文件都放在/data目录下, 其中会有三个子目录 ...
- 函数chdir、fchdir和getcwd
函数chdir.fchdir和getcwd chdir.fchdir函数 每个进程都有一个当前工作目录,当前目录是进程的一个属性 当用户登录UNIX系统时,其当前工作目录通常是口令文件 ...
- vuejs配置less
本次我们来聊聊,vuejs里如何使用less.都是根据自己的开发经验来写,不对的地方请各位拍砖. 在webstorm上配置Less 首先,全局安装less npm install less -g 然 ...
- Html5如何自学 只需这几步
Html5在整个行业卷起了一场大潮流,好多人都,但是很多人都不知道该怎么学习Html5,不知道Html5该如何自学?不知道Html5开发多久才会学会?接下来将从以下几点内容详细讲述. 第一,很多人建议 ...
- CDH5.11..0安装
1.参考: http://www.cnblogs.com/codedevelop/p/6762555.html grant all privileges on *.* to 'root'@'hostn ...
- Redis在本地测试没有问题,上传的服务器后出现错误
在服务器上,new Redis 可以拿到对象数据,但是其他操作就会报错. Redis 开启过程中,遇到错误 . :( protocol error, got 'S' as reply type byt ...