题解 | #火车进站#

火车进站

https://www.nowcoder.com/practice/97ba57c35e9f4749826dc3befaeae109

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int n;
int train[10];
int list_n[10];
int list[6000][10];

int stack[10];
int top = -1;

int out = 0;

int indexx = 0;



int kind = 0;
int n;

char result[6000][10];
int cmp(const void* a, const void* b) {
    return strcmp((char*)a, (char*)b);
}

void DFS() {
    if (out == n) {
        for (int i = 0; i < n; i++) {
            list[kind][i] = list_n[i];
        }
        kind++;
        return;
    }
    if (indexx < n) {
        stack[++top] = train[indexx++];
        DFS();
        top--;
        indexx--;
    }

    if (top >= 0) {
        list_n[out++] = stack[top--];
        DFS();
        stack[++top] = list_n[--out];
    }

}
int main() {
    memset(result, 0, sizeof(result));
    while (scanf("%d", &n) != EOF) {
        for (int i = 0; i < n; i++) {
            scanf("%d", &train[i]);
        }
        DFS();


        for (int i = 0; i < kind; i++) {
            for (int j = 0; j < n; j++) {
                result[i][j] = list[i][j] + '0';
                
            }
            
        }

        qsort(result, kind, sizeof(result[0]), cmp);

        for (int i = 0; i < kind; i++) {
            for (int j = 0; j < n; j++) {
                printf("%c ", result[i][j]);
            }
            printf("\n");
        }


    }

    return 0;
}

全部评论

相关推荐

11-04 21:17
江南大学 Java
穷哥们想卷进大厂:肯定会问技术呀,面试你的可能是别人
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务