hdu,1276,士兵队列训练问题

2024-06-12 07:18

本文主要是介绍hdu,1276,士兵队列训练问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

士兵队列训练问题

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2673    Accepted Submission(s): 1220

Problem Description

某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数。。。,以后从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。

 

 

Input

本题有多个测试数据组,第一行为组数N,接着为N行新兵人数,新兵人数不超过5000

 

 

Output

共有N行,分别对应输入的新兵人数,每行输出剩下的新兵最初的编号,编号之间有一个空格。

 

 

Sample Input

2

20

40

 

 

Sample Output

1 7 19

1 19 37

 

 

Author

Cai Minglun

 

 

Source

杭电ACM集训队训练赛(VI

 

#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <stdlib.h>
typedef struct str
{
int cap;
int size;
int h;
int t;
int *arr;
}que;
void stque(que *q,int n)
{
q->cap=n;
q->h=0;
q->t=0;
q->size=0;
q->arr=(int *)malloc(sizeof(int)*n);
}
int inque(que *q,int x)
{
q->size++;
q->arr[q->t]=x;
q->t=(q->t+1)%q->cap;
return 0;
}
int outque(que *q)
{
int t;
q->size--;
t=q->arr[q->h];
q->arr[q->h]=0;
q->h=(q->h+1)%q->cap;
return t;
}
void freeque(que *q)
{
free(q);
}
int main()
{
int cases,x,i,tem;
que *q1=NULL,*q2=NULL,*ans=NULL;
scanf("%d",&cases);
while (cases--)
{
q1=(que *)malloc(sizeof(que));
q2=(que *)malloc(sizeof(que));
scanf("%d",&x);
stque(q1,x+5);
for (i=1;i<=x;i++)
inque(q1,i);
ans=q1;
while (q1->size>3)
{
stque(q2,x+5);
while (q1->h!=q1->t)
{
tem=outque(q1);
if ((q1->h)%2!=0)//如果循环队列起作用,这里可能会出错
inque(q2,tem);
}
if (q2->size<=3)
{
ans=q2;
break;
}
stque(q1,x+5);
while (q2->h!=q2->t)
{
tem=outque(q2);
if ((q2->h)%3!=0)//如果循环队列起作用,这里可能会出错
inque(q1,tem);
}
if (q1->size<=3)
{
ans=q1;
break;
}
}
for (i=ans->h;i<ans->t-1;i++)
printf("%d ",ans->arr[i]);
printf("%d\n",ans->arr[i]);
}
return 0;
}


按几天讲的队列的方法自己写了这道题提交时一次过了,但是提交之前调试了很长时间

 

 

 

 

 

这篇关于hdu,1276,士兵队列训练问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1053539

相关文章

Java中JSON格式反序列化为Map且保证存取顺序一致的问题

《Java中JSON格式反序列化为Map且保证存取顺序一致的问题》:本文主要介绍Java中JSON格式反序列化为Map且保证存取顺序一致的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录背景问题解决方法总结背景做项目涉及两个微服务之间传数据时,需要提供方将Map类型的数据序列化为co

如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socket read timed out的问题

《如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socketreadtimedout的问题》:本文主要介绍解决Druid线程... 目录异常信息触发场景找到版本发布更新的说明从版本更新信息可以看到该默认逻辑已经去除总结异常信息触发场景复

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

MySQL启动报错:InnoDB表空间丢失问题及解决方法

《MySQL启动报错:InnoDB表空间丢失问题及解决方法》在启动MySQL时,遇到了InnoDB:Tablespace5975wasnotfound,该错误表明MySQL在启动过程中无法找到指定的s... 目录mysql 启动报错:InnoDB 表空间丢失问题及解决方法错误分析解决方案1. 启用 inno

Java使用MethodHandle来替代反射,提高性能问题

《Java使用MethodHandle来替代反射,提高性能问题》:本文主要介绍Java使用MethodHandle来替代反射,提高性能问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录一、认识MethodHandle1、简介2、使用方式3、与反射的区别二、示例1、基本使用2、(重要)

电脑蓝牙连不上怎么办? 5 招教你轻松修复Mac蓝牙连接问题的技巧

《电脑蓝牙连不上怎么办?5招教你轻松修复Mac蓝牙连接问题的技巧》蓝牙连接问题是一些Mac用户经常遇到的常见问题之一,在本文章中,我们将提供一些有用的提示和技巧,帮助您解决可能出现的蓝牙连接问... 蓝牙作为一种流行的无线技术,已经成为我们连接各种设备的重要工具。在 MAC 上,你可以根据自己的需求,轻松地

Java 中的跨域问题解决方法

《Java中的跨域问题解决方法》跨域问题本质上是浏览器的一种安全机制,与Java本身无关,但Java后端开发者需要理解其来源以便正确解决,下面给大家介绍Java中的跨域问题解决方法,感兴趣的朋友一起... 目录1、Java 中跨域问题的来源1.1. 浏览器同源策略(Same-Origin Policy)1.

如何清理MySQL中的binlog问题

《如何清理MySQL中的binlog问题》:本文主要介绍清理MySQL中的binlog问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目http://www.chinasem.cn录清理mysql中的binlog1.查看binlog过期时间2. 修改binlog过期

如何解决yum无法安装epel-release的问题

《如何解决yum无法安装epel-release的问题》:本文主要介绍如何解决yum无法安装epel-release的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录yum无法安装epel-release尝试了第一种方法第二种方法(我就是用这种方法解决的)总结yum

IDEA下"File is read-only"可能原因分析及"找不到或无法加载主类"的问题

《IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题》:本文主要介绍IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题,具有很好的参... 目录1.File is read-only”可能原因2.“找不到或无法加载主类”问题的解决总结1.File