用C语言编程出名字的各种排列组合(名字最大限制五个字)

需要程序,及其流程图
例如,输入孙悟空,输出孙悟空,孙空悟,悟孙空,悟空孙,空孙悟,空悟孙

img


涉及到内存分配、确保不产生内存泄露

回答:

img

#include<stdio.h>
#include<iostream>
using namespace std;

int main() {
    int n;

    printf("请输入字符串长度:");

    scanf("%d", &n);

    string a[n];

    printf("请输入字符串:");

    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }

    if (n == 1) {
        for (int i = 0; i < n; i++) {
            cout << a[i] << "  ";
        }
    }
    else if (n == 2) {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if (i != j) {
                    cout << a[i] << a[j] << "  ";
                }
            }
            cout << endl;
        }
    }
    else if (n == 3) {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                for (int k = 0; k < n; k++) {
                    if (i != j && j != k && i != k) {
                        cout << a[i] << a[j] << a[k] << "  ";
                    }
                }
            }
            cout << endl;
        }
    }
    else if (n == 4) {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                for (int k = 0; k < n; k++) {
                    for (int l = 0; l < n; l++) {
                        if (i != j && i != k && i != l && j != k && j != l && k != l) {
                            cout << a[i] << a[j] << a[k] << a[l] << "  ";
                        }
                    }
                }
            }
            cout << endl;
        }
    }
    else if (n == 5) {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                for (int k = 0; k < n; k++) {
                    for (int l = 0; l < n; l++) {
                        for (int m = 0; m < n; m++) {
                            if (i != j && i != k && i != l && j != k && j != l && k != l && i != m && j != m && l != m && k != m) {
                                cout << a[i] << a[j] << a[k] << a[l] << a[m] << "  ";
                            }
                        }
                    }
                }
            }
            printf("\n");
        }
    }
    else
    {
        printf("输入字符长度最多为五!\n");
    }
}

img