欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

打印一个不重复字符串数组的所有组合

程序员文章站 2024-03-15 18:59:06
...
// 打印一个字符串数组的所有组合,数组中字符串不重复
// 打印包含n个字符的排序
int print_all_str_combin(char array[], char a[], int n) {
    if (a == nullptr || n < 0) {
        return 0;
    }

    if (n == 0) {
        cout << array << endl;
    } else {
        for (int i = 0; i < n; i++) {
            swap(a[0], a[i]);
            print_all_str_combin(a + 1, n - 1);
            swap(a[i], a[0]);
        }
    }

    return 0;
}

// 打印包含n个字符的排序
int print_all_str_combin(char a[], int n) {
    if (a == nullptr || n < 0) {
        return 0;
    }

    if (n == 0) {
        cout << a << endl;
    } else {
        for (int i = 0; i < n; i++) {
            swap(a[n - 1], a[i]);
            print_all_str_combin(a, n - 1);
            swap(a[n - 1], a[i]);
        }
    }

    return 0;
}

// 打印包含n个字符的排序
int print_all_str_combin(char a[], char* begain) {
    if (a == nullptr || begain == nullptr) {
        return 0;
    }

    if (*begain == '\0') {
        cout << a << endl;
    } else {
        for (char *p = begain; *p != '\0'; p++) {
            swap(begain, p);
            print_all_str_combin(a, begain + 1);
            swap(begain, p);
        }
    }

    return 0;
}
相关标签: 数据结构 算法