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 - 士兵队列训练问题相关推荐

  1. HDU1276 士兵队列训练问题【模拟+array+vector+list】

    士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  2. 士兵队列训练问题 (队列 c++)

    士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  3. hdoj 1276 士兵队列训练问题 模拟队列

    士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  4. 士兵队列训练问题(队列+超详细解析)

    士兵队列训练问题 HDU - 1276 目录 士兵队列训练问题 HDU - 1276 题意描述:输入的新兵人数,按照先报1.2,将2出列:接着按1.2.3报数,将3出列.重复上述循环,直到所剩人数不超 ...

  5. dhu 4.1 队列模板简单应用算法设计:士兵队列训练

    队列模板简单应用算法设计:士兵队列训练 时间限制: 1S类别: DS:队列->队列定义及应用 晚于: 2022-05-04 23:55:00后提交分数乘系数50% 截止日期: 2022-05-0 ...

  6. HDUOJ士兵队列训练

    ** HDUOJ1276士兵队列训练 ** 士兵队列训练问题 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方 ...

  7. 杭电1276:士兵队列训练问题

    士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  8. 士兵队列训练问题 HDU - 1276

    题目 士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  9. 士兵队列训练问题/队列/C语言表达

    士兵队列训练问题 Title Description 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢, ...

最新文章

  1. Eclipse中安装插件时提示:No repository found containing: osgi.bundle,org.eclipse.emf,2.8.0.v20180706-1146
  2. ExcelBDD-Java开源组件发布了!
  3. HDU 1257 最少拦截系统
  4. 构建持续交付_如何使交付成为您的重点将如何帮助您构建高质量的应用程序
  5. springboot 整合mybatisplus输出sql语句不输出结果集
  6. Python批量检查网页是否被注入其他页面
  7. Mysql学习总结(60)——并发量大、数据量大的互联网业务数据库设计规范总结
  8. 关于vue中next和Tick(nextTick)的一点理解
  9. 创建与管理Oracle的分区表和本地索引
  10. MySQLdb查询有中文关键字查不到数据
  11. C++ Primer 第5版--练习10.35
  12. 2014全国计算机二级visual foxpro,全国计算机等级考试二级_VisualFoxPro语言程序设计_全.pdf...
  13. 机械零件设计手册_NASA Fastener Design Manual 紧固件设计手册 - 翻译 2/14
  14. 如何查看电脑CPU温度,笔记本温度显示怎么开启
  15. c语言算兔子野鸡,“上山兔子下山鸡,离水甲鱼不要追”,有什么科学依据?...
  16. 论文的开题报告是什么样的?
  17. 大家给推荐个4k显示器吧,码农,不玩游戏,护眼第一。
  18. 第14届蓝桥杯STEMA测评真题剖析-2022年11月27日Scratch编程初中级组
  19. 支付宝公钥私钥应用公钥私钥
  20. ListView random IndexOutOfBoundsException on Froyo

热门文章

  1. 数据库的范式化和反范式化模型
  2. 中国移动MobileMarket重点支持机型信息
  3. 全民k歌下载|全民k歌app下载
  4. 仁爱英语听力测试软件,仁爱版七年级下册英语听力|期末测试(一)听力训练
  5. Hardware/Firmware/Software的区别
  6. 什么是PSAM卡、SAM卡、SIM卡?
  7. matlab 列转行,postgresql 行转列,列转行后加入到一个整体数据
  8. 紧急预警!你的263邮箱可被随意登陆
  9. asp.net简易留言板
  10. 信息安全意识培训详解