풀 배열Reference

묘사 하 다.
우 리 는 n 의 전체 배열 을 1, 2, 3 이 라 고 부 릅 니 다. n 은 일정한 순서에 따라 구 성 된 서열 입 니 다. 예 를 들 어 3 의 모든 배열 은 1, 2, 3, 2, 3, 3, 3, 1, 2, 3, 2, 1 입 니 다.
입력
첫 줄 의 정수 n
출력
모든 n 의 전체 배열 을 출력 하고 사전 순서에 따라 작은 것 에서 큰 것 으로 출력 합 니 다.사전 순서 비교 크기 방법 은 첫 번 째 숫자 부터 비교 하 는 것 이 고, 다 르 면 크기 를 비교 하 는 것 이다. 그렇지 않 으 면 두 번 째 위 치 를 비교 해서 크기 위 치 를 비교 하 는 것 이다.샘플 은 사전 순서에 따라 정렬 한 결과 이다.
입력 샘플 1
3
출력 샘플 1
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1
제시 하 다.
데이터 범위: 1 < = n < = 8
메모: 결 과 를 출력 할 때 줄 이 끝 난 후 줄 을 바 꾸 기 전에 빈 칸 이 있 습 니 다.
C
#include 
#include 

int order[20];
int n;
bool c[20];

void calc(int k){
    if (k == n + 1)
    {
        for (int i = 1; i <= n; i++)
        {
            printf("%d ", order[i]);
        }
        printf("
"
); return; } for (int i = 1; i <= n; i++) { if (c[i]) { continue; } order[k] = i; c[i] = 1; calc(k+1); c[i] = 0; } } int main(void){ scanf("%d", &n); calc(1); return 0; }

Reference
https://syzoj.com/submission/25246

좋은 웹페이지 즐겨찾기