数字排列(程序)怎样编?

来源:百度知道 编辑:UC知道 时间:2024/06/16 23:35:42
描述
列出所有从1至n的连续自然数列,任意序列中不允许出现重复数字
输入格式
自然数n(1≤n≤9)
输出格式
由1~n组成的所有不重复数字序列,每行一个序列

#include <iostream>

void print(int *arr, int length) {
for (int i = 0; i < length; ++i) {
std::cout << *(arr + i);
}
std::cout << std::endl;
}

void swap(int *arr1, int *arr2) {
int temp = *arr1;
*arr1 = *arr2;
*arr2 = temp;
}

void permutate(int *arr, int length, int *subArr, int subLen) {
if (subLen == 1) { print(arr, length); }
else {
for (int i = 0; i < subLen; ++i) {
swap(subArr, subArr + i);
permutate(arr, length, subArr + 1, subLen - 1);
swap(subArr, subArr + i);
}
}
}

void permutate(int *arr, int length) {
permutate(arr, length, arr, length);
}

int main()
{
int n;
std::cout << "enter a number n: (1 <= n <= 9)" << std::endl;
std::cin >> n;
int *arr = new int[n];
for (int i = 0; i < n; ++i) {
arr[i] =