1276 병사 대열 훈련 문제 [대열 시 뮬 레이 션]
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 4565 Accepted Submission(s): 2128
Problem Description
모 부 대 는 신병 대열 훈련 을 실시 하여 신병 을 처음부터 순서대로 번 호 를 매 겨 횡대 로 나란히 세 웠 다. 훈련의 규칙 은 다음 과 같다. 처음부터 1 부터 2 까지 번호, 2 까지 번호, 나머지 는 작은 번호 방향 으로 접근 한 다음 에 처음부터 1 부터 3 까지 번호, 3 까지 번호, 나머지 는 작은 번호 방향 으로 접근 했다.계속 처음부터 1 부터 2 까지 번호...이후 처음부터 1 ∼ 2 번, 1 ∼ 3 번 을 돌아 가면 서 나머지 인원 이 3 명 을 넘 지 않 을 때 까지 진행한다.
Input
이 문 제 는 여러 테스트 데이터 팀 이 있 으 며, 첫 번 째 행동 팀 은 N 행 신병 수 이 고, 이 어 N 행 신병 수 이 며, 신병 수 는 5000 을 넘 지 않 는 다.
Output
입력 한 신병 수 에 대응 하 는 N 줄 이 있 고, 줄 마다 남 은 신병 의 최초 번 호 를 출력 하 며, 번호 사이 에 빈 칸 이 있 습 니 다.
Sample Input
2 20 40
Sample Output
1 7 19 1 19 37
这个题刚看到的时候没多少思路,如果用数组模拟的话,应该可以实现,因为数组本来就是有顺序的,但是处理的时候就有些复杂了,因为数组删除太麻烦,
想想什么类型的可以便于删除和标记呢,好像没有啊...
再拓展一下思路,发现一个好方法,完全可以用队列模拟,在需要的时候把某个元素舍去,而且不打乱原来的顺序,打乱了?那你把队列循环一圈不就行了吗??
因为有两种不同的处理方法,所以用一个变量标记一下第几次模拟编序号,因为两种编号是交替的.......具体看代码注释............
#include
#include
using namespace std;
int main()
{
int t,n,i,j;
scanf("%d",&t);
while(t--)
{
queueq;// ,
scanf("%d",&n);
for(i=1;i<=n;++i)
{
q.push(i);//
}
int p=1,x,k;
while(q.size()>3)// ,
{
x=q.size();//
if(p&1)// , 1 2
{
for(i=0;i 1
q.push(k);// 1 ,
q.pop();// 1 ( , )
q.pop();// 2 , ...
}
if(x&1)
{
k=q.front();// , ....
q.push(k);//
q.pop();// .....
}
}
else// , 1 3
{
for(i=0;i
이 방법 은 바로 그 과정 을 완전히 모 의 하 는 것 이다. 매번 마지막 에 남 은 몇 사람 을 고려 하면 다른 문 제 는 크 지 않다. 이것 은 스스로 수 동 으로 모 의 하 는 것 이 가장 좋 고 빨리 이해 할 수 있다.
또한 처음으로 stl 안의 대기 열 을 사용 하 는 것 도 좋 은 것 같 습 니 다. 그러나 stl 에서 제공 하 는 데이터 구조 나 함수 의 작업 원 리 를 이해 하지 못 한다 면 되도록 사용 하지 마 세 요. 먼저 이러한 기능 을 모 의 하 는 방법 을 알 아 보 세 요. 그렇지 않 으 면 자신 이 stl 로 간단 한 템 플 릿 문 제 를 풀 수 있 지만 나중에 관련 이 많 을 때...이 함수 들 의 작업 원리 에 대해 잘 모 르 기 때문에 잘 사용 하지 못 할 수도 있 습 니 다.
이렇게 하 는 것 은 치 명 적 인 것 이다. 마치 어떤 사람들 이 순환 을 철저히 이해 하지 못 하면 어떤 데이터 구 조 를 배 워 야 하 는 지, 근본적으로 제대로 배우 지 못 하고 자신의 생각, 자신 이 반드시 어떤 기초 적 인 것 을 튼튼 하 게 해 야 한다 고 느낀다. 그렇지 않 으 면 앞으로 똑 같은 것 이 변형 되면 파악 할 수 없다.
가장 중요 한 건 기초 야..
개인 적 인 관점 은..............................................................
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Deu Bracitoi Seqnsia텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.