병사 대열 훈련 문제 / 대열 / C 언어 표현
                                            
 13548 단어  데이터 구조
                    
Title Description 모 부 대 는 신병 대열 훈련 을 실시 하여 신병 을 처음부터 순서대로 번 호 를 매 겨 일렬 횡대 로 배치한다. 훈련의 규칙 은 다음 과 같다. 처음부터 1 부터 2 까지 번호, 2 까지 번호, 나머지 는 작은 번호 방향 으로 다가 가 고 처음부터 1 부터 3 까지 번호, 3 까지 번호, 나머지 는 작은 번호 방향 으로 다가 간다.계속 처음부터 1 부터 2 까지 번호...이후 처음부터 1 ∼ 2 번, 1 ∼ 3 번 을 돌아 가면 서 나머지 인원 이 3 명 을 넘 지 않 을 때 까지 진행한다.
Input 본 문 제 는 여러 테스트 데이터 그룹 이 있 으 며, 첫 번 째 행동 그룹 은 N 이 고, 이 어 N 행 신병 수 이 며, 신병 수 는 5 천 명 을 넘 지 않 는 다.
Output 은 모두 N 줄 로 각각 입력 한 신병 수 에 대응 하 며, 줄 마다 남 은 신병 의 최초 번 호 를 출력 하 며, 번호 사이 에 빈 칸 이 있 습 니 다.
Sample Input
2 20 40
Sample Output
1 7 19 1 19 37
생각:
대열 의 사상 을 활용 하여 병사 들 이 원 을 그 리 는 것 을 상상 하 다.조세 프 링 처럼.같은 사상.
AC 코드:
#include
");continue;
            }
            else if(n==2)
            {
                printf("1 2
");continue;
            }
            else if(n==3)
            {
                printf("1 2 3
");continue;
            }
            else{
                while(1)    //       ,             ,      3
                {
                    x=0;
                    for(i=1;i<=n;i++)
                    {
                        if(k==1)    // 2   
                        {
                            if(a[i]==0)
                            {
                                x++;
                            }
                            if(x==2)
                            {
                                a[i]=1; //      
                                cnt--;  //      
                                x=0;
                            }
                        }
                        if(k==-1)   // 3   
                        {
                            if(a[i]==0)
                            {
                                x++;
                            }
                            if(x==3)
                            {
                                a[i]=1; //      
                                cnt--;  //      
                                x=0;
                            }
                        }
                    }
                    k=-k;   //      3  2,     
                    if(cnt<=3)  //      3     
                    {
                        break;
                    }
                }
            }
            x=0;
            for(i=1;i<=n;i++)
            {
                if(a[i]!=1)
                {
                    if(x!=0)       // !0     
                    printf(" ");
                    printf("%d",i);
                    x++;            
                }
            }
            printf("
");
        }
    }
    return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.