Day3 C - 士兵队列训练问题
Day3 C - 士兵队列训练问题
- 题目正文
- 输入
- 输出
- 样例
- 代码
- 总结
题目正文
某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数。。。,以后从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。
输入
本题有多个测试数据组,第一行为组数N,接着为N行新兵人数,新兵人数不超过5000。
输出
共有N行,分别对应输入的新兵人数,每行输出剩下的新兵最初的编号,编号之间有一个空格。
样例
2
20
40
1 7 19
1 19 37
代码
`.
//1.定义三个数组,a,用来存放士兵的编号,b用来存放是否出列,出列用0表示,c表示最后的小于等于三个人
//2.定义测试用例,并输入,定义要测试的数,并输入
//3.循环把编号存放进a数组,并标记为1
//4.用一个变量记录n,因为n会发生改变,判断是否n大于3
//5.因为士兵每出列一次都需要重新排序,顺序没变,序号发生了改变,用两层循环
//判断是否能被2整除,且标记为1才需要判断,如果能被整除,标记为0,数量减1
//否则就记录仍在队列的士兵即为1的,数量加1,并且重新赋值给a;
//6.判断数量小于3,如果是跳出循环
//7.循环遍历可以被3整除的,同上
//8.输出时,放在一个数组中, for(i=1,j=0;i<=n;i++),判断是否标记为1,c[j++]=i;
//9.当t==3,输出前三个,当t==2时,输出前两个,以此类推
#include<stdio.h>
#include<iostream>
using namespace std;
int a[5001],b[5001],c[4];
int main()
{int T;cin>>T;while(T--){int n;cin>>n;int i,j,k,t;for(i=1;i<=n;i++)//存入数组{a[i]=i;b[i]=1;}t=n;//记录士兵数量,因为会发生变化if(n>3)for(j=1;j<=n;j++){for(i=1,k=0;i<=n;i++){if(a[i]%2==0&&b[i]){b[i]=0;t--;}else if(b[i])//没有出列的士兵重新赋值{k++;a[i]=k;}}if(t<=3)break;for(i=1,k=0;i<=n;i++){if(a[i]%3==0&&b[i]){b[i]=0;t--;}else if(b[i])//没有出列的士兵重新赋值{k++;a[i]=k;}}if(t<=3)break;}for(i=1,j=0;i<=n;i++){if(b[i])c[j++]=i;}if(t==3)printf("%d %d %d\n",c[0],c[1],c[2]);else if(t==2)printf("%d %d\n",c[0],c[1]);else if(t==1)printf("%d\n",c[0]);}return 0;
}
总结
这次的队列问题,我主要是用数组来标记,是否出列,保留士兵原本的序号,其实只需要用循环遍历出能被2和3整除的士兵,可以不用这么麻烦也是可以的。
Day3 C - 士兵队列训练问题相关推荐
- HDU1276 士兵队列训练问题【模拟+array+vector+list】
士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- 士兵队列训练问题 (队列 c++)
士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- hdoj 1276 士兵队列训练问题 模拟队列
士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- 士兵队列训练问题(队列+超详细解析)
士兵队列训练问题 HDU - 1276 目录 士兵队列训练问题 HDU - 1276 题意描述:输入的新兵人数,按照先报1.2,将2出列:接着按1.2.3报数,将3出列.重复上述循环,直到所剩人数不超 ...
- dhu 4.1 队列模板简单应用算法设计:士兵队列训练
队列模板简单应用算法设计:士兵队列训练 时间限制: 1S类别: DS:队列->队列定义及应用 晚于: 2022-05-04 23:55:00后提交分数乘系数50% 截止日期: 2022-05-0 ...
- HDUOJ士兵队列训练
** HDUOJ1276士兵队列训练 ** 士兵队列训练问题 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方 ...
- 杭电1276:士兵队列训练问题
士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- 士兵队列训练问题 HDU - 1276
题目 士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- 士兵队列训练问题/队列/C语言表达
士兵队列训练问题 Title Description 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢, ...
最新文章
- Eclipse中安装插件时提示:No repository found containing: osgi.bundle,org.eclipse.emf,2.8.0.v20180706-1146
- ExcelBDD-Java开源组件发布了!
- HDU 1257 最少拦截系统
- 构建持续交付_如何使交付成为您的重点将如何帮助您构建高质量的应用程序
- springboot 整合mybatisplus输出sql语句不输出结果集
- Python批量检查网页是否被注入其他页面
- Mysql学习总结(60)——并发量大、数据量大的互联网业务数据库设计规范总结
- 关于vue中next和Tick(nextTick)的一点理解
- 创建与管理Oracle的分区表和本地索引
- MySQLdb查询有中文关键字查不到数据
- C++ Primer 第5版--练习10.35
- 2014全国计算机二级visual foxpro,全国计算机等级考试二级_VisualFoxPro语言程序设计_全.pdf...
- 机械零件设计手册_NASA Fastener Design Manual 紧固件设计手册 - 翻译 2/14
- 如何查看电脑CPU温度,笔记本温度显示怎么开启
- c语言算兔子野鸡,“上山兔子下山鸡,离水甲鱼不要追”,有什么科学依据?...
- 论文的开题报告是什么样的?
- 大家给推荐个4k显示器吧,码农,不玩游戏,护眼第一。
- 第14届蓝桥杯STEMA测评真题剖析-2022年11月27日Scratch编程初中级组
- 支付宝公钥私钥应用公钥私钥
- ListView random IndexOutOfBoundsException on Froyo